Welcome to the London Contemporary School of Piano YouTube channel — a space for curious pianists ready to deepen their understanding and play with clarity, style, and confidence. Every video is based on real teaching experience, shaped by hundreds of lessons with students from over 30 countries. Whether you're exploring jazz harmony, classical improvisation, blues grooves, or contemporary progressions, you’ll find thoughtful, structured lessons designed to build lasting musical fluency. We focus on chord theory, rhythm, expression, and creative application, not just technique for its own sake. If you're looking for a clear, intelligent approach to piano that encourages exploration and growth, you're in the right place. Subscribe and start your next chapter.
Invidious encountered an error while trying to parse this item. For more information see below:
Title: `Missing hash key: "collectionThumbnailViewModel" (KeyError)` Date: `2026-05-28T20:23:19Z` Route: `/channel/UCZWqaBf6VLuD0cSKF4cukPg/streams` Version: `2026.02.07-118d635 @ (HEAD detached at v2.20260207.0)` <details> <summary>Backtrace</summary> <p> ``` Missing hash key: "collectionThumbnailViewModel" (KeyError) from /usr/share/crystal/src/hash.cr:1198:9 in '??' from /usr/share/crystal/src/json/any.cr:149:5 in 'process' from src/invidious/yt_backend/extractors.cr:524:17 in 'process' from src/invidious/yt_backend/extractors.cr:1035:17 in 'parse_item' from src/invidious/yt_backend/extractors.cr:1082:14 in 'extract_items' from src/invidious/channels/videos.cr:73:12 in 'get_60_livestreams:continuation:sort_by' from src/invidious/routes/channels.cr:127:34 in 'streams' from lib/kemal/src/kemal/route.cr:13:9 in '->' from src/invidious/helpers/handlers.cr:31:37 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call_next' from lib/kemal/src/kemal/filter_handler.cr:22:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call_next' from src/invidious/helpers/handlers.cr:80:12 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call_next' from src/ext/kemal_static_file_handler.cr:127:14 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/request_processor.cr:51:11 in 'handle_client' from /usr/share/crystal/src/fiber.cr:170:11 in 'run' from ??? ``` </p> </details>
Invidious encountered an error while trying to parse this item. For more information see below:
Title: `Missing hash key: "collectionThumbnailViewModel" (KeyError)` Date: `2026-05-28T20:23:19Z` Route: `/channel/UCZWqaBf6VLuD0cSKF4cukPg/streams` Version: `2026.02.07-118d635 @ (HEAD detached at v2.20260207.0)` <details> <summary>Backtrace</summary> <p> ``` Missing hash key: "collectionThumbnailViewModel" (KeyError) from /usr/share/crystal/src/hash.cr:1198:9 in '??' from /usr/share/crystal/src/json/any.cr:149:5 in 'process' from src/invidious/yt_backend/extractors.cr:524:17 in 'process' from src/invidious/yt_backend/extractors.cr:1035:17 in 'parse_item' from src/invidious/yt_backend/extractors.cr:1082:14 in 'extract_items' from src/invidious/channels/videos.cr:73:12 in 'get_60_livestreams:continuation:sort_by' from src/invidious/routes/channels.cr:127:34 in 'streams' from lib/kemal/src/kemal/route.cr:13:9 in '->' from src/invidious/helpers/handlers.cr:31:37 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call_next' from lib/kemal/src/kemal/filter_handler.cr:22:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call_next' from src/invidious/helpers/handlers.cr:80:12 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call_next' from src/ext/kemal_static_file_handler.cr:127:14 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/request_processor.cr:51:11 in 'handle_client' from /usr/share/crystal/src/fiber.cr:170:11 in 'run' from ??? ``` </p> </details>
Invidious encountered an error while trying to parse this item. For more information see below:
Title: `Missing hash key: "collectionThumbnailViewModel" (KeyError)` Date: `2026-05-28T20:23:19Z` Route: `/channel/UCZWqaBf6VLuD0cSKF4cukPg/streams` Version: `2026.02.07-118d635 @ (HEAD detached at v2.20260207.0)` <details> <summary>Backtrace</summary> <p> ``` Missing hash key: "collectionThumbnailViewModel" (KeyError) from /usr/share/crystal/src/hash.cr:1198:9 in '??' from /usr/share/crystal/src/json/any.cr:149:5 in 'process' from src/invidious/yt_backend/extractors.cr:524:17 in 'process' from src/invidious/yt_backend/extractors.cr:1035:17 in 'parse_item' from src/invidious/yt_backend/extractors.cr:1082:14 in 'extract_items' from src/invidious/channels/videos.cr:73:12 in 'get_60_livestreams:continuation:sort_by' from src/invidious/routes/channels.cr:127:34 in 'streams' from lib/kemal/src/kemal/route.cr:13:9 in '->' from src/invidious/helpers/handlers.cr:31:37 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call_next' from lib/kemal/src/kemal/filter_handler.cr:22:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call_next' from src/invidious/helpers/handlers.cr:80:12 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call_next' from src/ext/kemal_static_file_handler.cr:127:14 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/request_processor.cr:51:11 in 'handle_client' from /usr/share/crystal/src/fiber.cr:170:11 in 'run' from ??? ``` </p> </details>
Invidious encountered an error while trying to parse this item. For more information see below:
Title: `Missing hash key: "collectionThumbnailViewModel" (KeyError)` Date: `2026-05-28T20:23:19Z` Route: `/channel/UCZWqaBf6VLuD0cSKF4cukPg/streams` Version: `2026.02.07-118d635 @ (HEAD detached at v2.20260207.0)` <details> <summary>Backtrace</summary> <p> ``` Missing hash key: "collectionThumbnailViewModel" (KeyError) from /usr/share/crystal/src/hash.cr:1198:9 in '??' from /usr/share/crystal/src/json/any.cr:149:5 in 'process' from src/invidious/yt_backend/extractors.cr:524:17 in 'process' from src/invidious/yt_backend/extractors.cr:1035:17 in 'parse_item' from src/invidious/yt_backend/extractors.cr:1082:14 in 'extract_items' from src/invidious/channels/videos.cr:73:12 in 'get_60_livestreams:continuation:sort_by' from src/invidious/routes/channels.cr:127:34 in 'streams' from lib/kemal/src/kemal/route.cr:13:9 in '->' from src/invidious/helpers/handlers.cr:31:37 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call_next' from lib/kemal/src/kemal/filter_handler.cr:22:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call_next' from src/invidious/helpers/handlers.cr:80:12 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call_next' from src/ext/kemal_static_file_handler.cr:127:14 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/request_processor.cr:51:11 in 'handle_client' from /usr/share/crystal/src/fiber.cr:170:11 in 'run' from ??? ``` </p> </details>
Invidious encountered an error while trying to parse this item. For more information see below:
Title: `Missing hash key: "collectionThumbnailViewModel" (KeyError)` Date: `2026-05-28T20:23:19Z` Route: `/channel/UCZWqaBf6VLuD0cSKF4cukPg/streams` Version: `2026.02.07-118d635 @ (HEAD detached at v2.20260207.0)` <details> <summary>Backtrace</summary> <p> ``` Missing hash key: "collectionThumbnailViewModel" (KeyError) from /usr/share/crystal/src/hash.cr:1198:9 in '??' from /usr/share/crystal/src/json/any.cr:149:5 in 'process' from src/invidious/yt_backend/extractors.cr:524:17 in 'process' from src/invidious/yt_backend/extractors.cr:1035:17 in 'parse_item' from src/invidious/yt_backend/extractors.cr:1082:14 in 'extract_items' from src/invidious/channels/videos.cr:73:12 in 'get_60_livestreams:continuation:sort_by' from src/invidious/routes/channels.cr:127:34 in 'streams' from lib/kemal/src/kemal/route.cr:13:9 in '->' from src/invidious/helpers/handlers.cr:31:37 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call_next' from lib/kemal/src/kemal/filter_handler.cr:22:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call_next' from src/invidious/helpers/handlers.cr:80:12 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call_next' from src/ext/kemal_static_file_handler.cr:127:14 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/request_processor.cr:51:11 in 'handle_client' from /usr/share/crystal/src/fiber.cr:170:11 in 'run' from ??? ``` </p> </details>
Invidious encountered an error while trying to parse this item. For more information see below:
Title: `Missing hash key: "collectionThumbnailViewModel" (KeyError)` Date: `2026-05-28T20:23:19Z` Route: `/channel/UCZWqaBf6VLuD0cSKF4cukPg/streams` Version: `2026.02.07-118d635 @ (HEAD detached at v2.20260207.0)` <details> <summary>Backtrace</summary> <p> ``` Missing hash key: "collectionThumbnailViewModel" (KeyError) from /usr/share/crystal/src/hash.cr:1198:9 in '??' from /usr/share/crystal/src/json/any.cr:149:5 in 'process' from src/invidious/yt_backend/extractors.cr:524:17 in 'process' from src/invidious/yt_backend/extractors.cr:1035:17 in 'parse_item' from src/invidious/yt_backend/extractors.cr:1082:14 in 'extract_items' from src/invidious/channels/videos.cr:73:12 in 'get_60_livestreams:continuation:sort_by' from src/invidious/routes/channels.cr:127:34 in 'streams' from lib/kemal/src/kemal/route.cr:13:9 in '->' from src/invidious/helpers/handlers.cr:31:37 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call_next' from lib/kemal/src/kemal/filter_handler.cr:22:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call_next' from src/invidious/helpers/handlers.cr:80:12 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call_next' from src/ext/kemal_static_file_handler.cr:127:14 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/request_processor.cr:51:11 in 'handle_client' from /usr/share/crystal/src/fiber.cr:170:11 in 'run' from ??? ``` </p> </details>
Invidious encountered an error while trying to parse this item. For more information see below:
Title: `Missing hash key: "collectionThumbnailViewModel" (KeyError)` Date: `2026-05-28T20:23:19Z` Route: `/channel/UCZWqaBf6VLuD0cSKF4cukPg/streams` Version: `2026.02.07-118d635 @ (HEAD detached at v2.20260207.0)` <details> <summary>Backtrace</summary> <p> ``` Missing hash key: "collectionThumbnailViewModel" (KeyError) from /usr/share/crystal/src/hash.cr:1198:9 in '??' from /usr/share/crystal/src/json/any.cr:149:5 in 'process' from src/invidious/yt_backend/extractors.cr:524:17 in 'process' from src/invidious/yt_backend/extractors.cr:1035:17 in 'parse_item' from src/invidious/yt_backend/extractors.cr:1082:14 in 'extract_items' from src/invidious/channels/videos.cr:73:12 in 'get_60_livestreams:continuation:sort_by' from src/invidious/routes/channels.cr:127:34 in 'streams' from lib/kemal/src/kemal/route.cr:13:9 in '->' from src/invidious/helpers/handlers.cr:31:37 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call_next' from lib/kemal/src/kemal/filter_handler.cr:22:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call_next' from src/invidious/helpers/handlers.cr:80:12 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call_next' from src/ext/kemal_static_file_handler.cr:127:14 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/handler.cr:30:7 in 'call' from /usr/share/crystal/src/http/server/request_processor.cr:51:11 in 'handle_client' from /usr/share/crystal/src/fiber.cr:170:11 in 'run' from ??? ``` </p> </details>