Posts by Category

Blog

Spotify Looper: Day 52

Debugging. I’m having to systematically work through each view to see if it’s working correctly. It’s a pain, but at least it helps to see a clear path forwa...

Spotify Looper: Day 50

I can check for playlistItem.track using the weird if case let syntax. I think I can solve problem 2 by adding a computed property in the spotify object. How...

Spotify Looper: Day 47

Finally managed to fix the scroll issue using this package suggested on my stack overflow question(this might also allow [[#^65a91c scro...

Spotify Looper: Day 46

Still stuck on how to move forward with MagnifierView. Mandy suggested I post on stackoverflow, which is a great idea!

Spotify Looper: Day 45

MinimapView now correctly adjusts the scroll offset in the MagnifierView window. However, I’m struggling to have things work in reverse. Because it’s a scrol...

Spotify Looper: Day 43

The scroll-in-play implementation is harder than I thought—I would need to debounce whenever the scrollview is scrolled to avoid updating the API hundreds of...

Spotify Looper: Day 42

Started adding scroll-in-play to MagnifierView. I spent most of today trying to use GeometryReader to expose the ScrollView offset, but I think I only need t...

Spotify Looper: Day 39

I’ve had a rethink about the UI, and so over the past few days been working on mocking that up in a new fork. Because I know that the backend is working, I’m...

Spotify Looper: Day 35

Completed basic LooperView. Thinking about what happens when a loop is changed. Logic’s cycle works like this: Start playhead has no effect on anything: i...

Spotify Looper: Day 33

It turns out that Timer is far too inaccurate to use for short loops. Instead, I think AudioKit might be a good option, using something like a MIDI sequenc...

Spotify Looper: Day 32

Implemented loop logic and button, but there is an issue in that it’s not super consistent. I’ll add some debug statements to figure out whether it’s a netwo...

Spotify Looper: Day 31

Fixed bug on not being able to launch the app without being connected to Xcode (was using Environment variables for the client credentials)

Spotify Looper: Day 30

âś… Can load the currently playing track and seek to any position using the playhead and segment buttons!!!

Spotify Looper: Day 29

Finally managed to sync up the UI to the API (with manual updates via a get button)! Created a State variable for position in Playhead (to allow for locally ...

Spotify Looper: Day 28

No luck. I’m not clear on the update model in my head. The PlayheadNavigationView isn’t working because I’ve not clearly defined whether it should take a bin...

Spotify Looper: Day 27

sigh the iOS API does work, but playerStateDidChange only updates on play/pause or new track, so isn’t going to work for updating the progress ❌

Spotify Looper: Day 26

Implemented a method on Spotify to retrieve the current playback as a subscriber, but this finishes after the request is sent, so I can’t use it to dynamical...

Spotify Looper: Day 25

On reflection, the iOS API is too janky to get working well, so I’ve branched back to using the Web API for everything-Loopify will essentially be a controll...

Spotify Looper: Day 22

Created a new branch to try and implement my own simpler version of the WebAPI. I only really need to get track analysis, so it seems better than having to d...

Spotify Looper: Day 19

Ok, the API works, and successfully downloads track analysis payload, but I’m not sure I like or need the SpotifyWebController class…it seems a bit redundant...

Spotify Looper: Day 18

Trying to fix compile issues with frameworks. So far I think there are two independent issues:

Spotify Looper: Day 17

Imported the webAPI framework, but having some build issues (probably a result of changing the App name yesterday). Currently unable to run previews in the a...

Spotify Looper: Day 16

First commit! I have a working playheadNavigationView that responds to dragging and tapping to update the playhead position on the timeline and segments.

Spotify Looper: Day 14

Finished the timeline (the longer playhead will go on top of the entire playheadnavigation). Added drag gesture to update position of playhead, and call a fu...

Spotify Looper: Day 13

Still messing with the timeline view trying to align the controls (specifically the playhead indicator which should extend over the other views). I need to g...

Spotify Looper: Day 12

Started with TimelineView. I found some code for a Vertical slider (which bizarrely doesn’t exist as a standard control). I’ll modify this to become the play...

Spotify Looper: Day 10

Split out sectionView as a subview in playheadNavigationView. Built the basic structure. Trying to work out how to differentiate between adjacent sections. I...

Spotify Looper: Day 8

The above Spotify clone only uses 30s previews in AVPlayer. I think that the initial concept of slowing down the app is not feasible right now. :( However, I...

Spotify Looper: Day 7

Successfully obtained playerstate. Had a lot of issues with getting the correct syntax, I think because the expected type was <Any?> and I was explicit...

Spotify Looper: Day 6

Managed to get a live update of playerState and the play/pause toggle will switch when the Spotify app changes state. But it’s not two-way yet.

Spotify Looper: Day 5

Fixed the callback issue. I had the wrong bundle id set in Xcode 🤦🏻‍♂️

Spotify Looper: Day 4

Fixed the Obj-C import, and app launches, but gets caught in a loop authorising with Spotify

Spotify Looper: Day 1

There doesn’t appear to be a way to get the raw PCM audio stream directly from any of the official APIs—they all implement their own player is some way. Ther...

Back to Top ↑