Giter Site home page Giter Site logo

mikey-midi's Introduction

Mikey-Midi

A python tutorial motivated by music.

We start by going through basic python concepts and work towards using music libraries in python for signal processing and working with MIDI data.

Useful Links

Getting started

The first piece of software you need is git, which is how we will share code. Download and install the 64-bit version. Consider creating a github account as well.

Next we have to get your computing environment set up.

The second piece of softare you need is anaconda which is a python package and environment manager. Follow this tutorial on how to install it on windows. Note, for step 6 indicate that you DO want to add anaconda to your PATH variable. VSCode is a good IDE (place to type code) so if you don't have one it is worth installing that too.

Now open up an anaconda prompt. Using the cd (change directory) command, navigate to the directory where you want this tutorial to live. Then use git to clone this repository. For instance:

cd documents
git clone xyz

Your first exercise is to figure out what the xyz should be. (Hint: it is a URL)

Now the code from this repo should be in Mikey-Midi folder. Go to this directory from the command line.

Next we need to install the right python packages (this will take 5+ minutes to finish). I made it easy for you by creating a dependencies file. Run

conda env create -f environment.yml
conda activate midi

Everytime you close out of this prompt you will need to rerun the second command to activate the midi environment. This is to isolate different packages and versions. For instance for your class you might need a different version of python and/or different versions of packages so this is a way to keep everything tidy.

Great, theoretically you have everything you need to get started. Getting your computing environment set up is an exercise in and of itself (I will be amazed if nothing went wrong) so good job getting this far.

The Tutorial

The tutorial is contained in a series of jupyter notebooks. Notebooks are an excellent way to quickly iterate and save intermediate outputs instead of having to rerun an entire script everytime you want to try something. The notebooks start with basic python concepts that you must familarize yourself with. The emphasis is on python primitives that are the most useful for using the music packages. It is intentially brief, and I encourage you to reference the attatched textbook for a deeper understanding. (This happens to be the textbook that I frantically read the 4 days before my first summer research job to learn python, a language I told the professor I was "already familiar with")

After the basics are out of the way, we can start with the actual MIDI concepts. I am not as musical, so I don't even really know what the right things to teach you are, but hopefully I can get you a decent foundation and you can look up specific things as you need them (learning how to Google what you need is a top 3 most important skill for a programmer).

To start the tutorial, run

jupyter notebook

in your anaconda prompt in the folder containing the notebooks. Select the correct notebook and ensure that the kernel is set to midi

When you think you finish a notebook, run

git add xyz.ipynb
git commit -m "This is where you type a message about you commit like finished notebook 1"
git push origin master

and let me know. I will then push the solutions so you can compare. If you finish before my break is over, I can continue to make up more advanced exercises to show you anything else you might be interested in.

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.