Giter Site home page Giter Site logo

mohamedkari / soundsride-ios Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 3.15 MB

SoundsRide: Affordance-Synchronized Music Mixing for In-Car Audio Augmented Reality [Client]

Home Page: https://mkari.de/soundsride

Makefile 1.03% Python 1.05% Shell 0.24% Swift 97.67%
siggraph2023 uist2021

soundsride-ios's Introduction

SoundsRide: Affordance-Synchronized Music Mixing for In-Car Audio Augmented Reality [Client]

Mohamed Kari1,2, Tobias Grosse-Puppendahl1, Alexander Jagaciak1, David Bethge1, Reinhard Schütte2, Christian Holz3

1 Porsche AG, Stuttgart, Germany
2 University of Duisburg-Essen, Germany
3 Sensing, Interaction & Perception Lab, Department of Computer Science, ETH Zürich, Switzerland


SoundsRide runs the mixing server on MacOS and the localization client on iOS. This repo contains the mixing server. For the mixing server, refer to the server repo.

Preparation

Open the localization client app in XCode and deploy it to the iPhone.

Because the dev iPhone is probably kept at a quite modern iOS version, we don't freeze the package dependencies. Instead, update all packages from the Project navigator side bar via right-click as shown below (running on iOS 16.7 and XCode 14.2) and potentially fix resulting problems: package dependencies

Development setup

Step 1: generate the protobuffer code

In the localization client repo, run

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer # uses the correct Swift compiler
make swift-protos # generates gRPC and protobuffer code in .grpc_build from the service spec

Step 2: configure the server network endpoint

Insert the server's (i.e., the MacBook's) IP address and the service port in soundsride/ServiceView.swift in the corresponding ip and port constants.

Step 3: deploy the app and copy the test trajectory to the iPhone

Build the app and deploy it to the iPhone via XCode. XCode simulates the GPS trajectory indicated via the Debug > Simulated Location menu.

Go the location tab and hit Start Recording. Generally, this will record a trajectory and save it the on the user file space on the phone. Of course, this specific trajectory is useless, but this step also created the required folder structure on the iPhone.

Go to the native Files app, to On this iPhone, to the soundsride app user data folder, into the localization subfolder. Delete the useless trajectory that has just been created. Now, deploy a provided trajectory, collected on the road, to the iPhone. In particular, open the data folder in this repo, and send the nord-labels2.csv file to the phone via AirDrop. On the phone, use the Files app to save the annoated csv trajectory in On this iPhone > soundsride > localication.

Then, deploy the app again through XCode, after the app is running, choose nord-labels2 from the Debug > Simulate Location menu. simulate location

Open the soundsride app again, go to the Location tab, choose the nord-labels2.csv trajectory from the dropdown menu.


GPS trajectory import

Step 4: revisit

Make sure the server is running: gRPC server listening

Finally, in the Location tab, hit Start Revisiting.

The iPhone will follow the simluated motion as indicated by nord-labels2.gpx in XCode. It will predicat ETAs against the events in the annotated trajectory nord-labels2.csv chosen through the Location tab's dropdown menu. (Of course, this behaves like an ideal case where the annotated trajectory used for ETA prediction and the real-time iPhone/vehicle motion are perfectly the same).


real-time ETA prediction

The ETA predictions will be sent to the server which continuously performs the music mixing and resynchronization. real-time mixing

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.