{"id":13419052,"url":"https://github.com/AllenDowney/ThinkDSP","last_synced_at":"2025-03-15T04:31:57.283Z","repository":{"id":10043273,"uuid":"12089444","full_name":"AllenDowney/ThinkDSP","owner":"AllenDowney","description":"Think DSP: Digital Signal Processing in Python, by Allen B. Downey.","archived":false,"fork":false,"pushed_at":"2024-05-10T18:36:11.000Z","size":214212,"stargazers_count":3959,"open_issues_count":11,"forks_count":3221,"subscribers_count":234,"default_branch":"master","last_synced_at":"2024-10-29T14:59:25.076Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://allendowney.github.io/ThinkDSP/","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AllenDowney.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-08-13T18:37:02.000Z","updated_at":"2024-10-28T14:52:16.000Z","dependencies_parsed_at":"2024-10-26T22:28:32.157Z","dependency_job_id":null,"html_url":"https://github.com/AllenDowney/ThinkDSP","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AllenDowney%2FThinkDSP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AllenDowney%2FThinkDSP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AllenDowney%2FThinkDSP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AllenDowney%2FThinkDSP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AllenDowney","download_url":"https://codeload.github.com/AllenDowney/ThinkDSP/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243685506,"owners_count":20330980,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-30T22:01:10.658Z","updated_at":"2025-03-15T04:31:57.277Z","avatar_url":"https://github.com/AllenDowney.png","language":"Jupyter Notebook","funding_links":[],"categories":["Jupyter Notebook","Uncategorized","Projects"],"sub_categories":["Uncategorized","Books"],"readme":"# ThinkDSP\n\n*Think DSP* is an introduction to Digital Signal Processing in Python.\n\n[Order *Think DSP* from Amazon.com](http://amzn.to/1naaUCN).\n\n[Download *Think DSP* in PDF](http://greenteapress.com/thinkdsp/thinkdsp.pdf).\n\n[Read *Think DSP* in HTML](http://greenteapress.com/thinkdsp/html/index.html).\n\nThe premise of this book (and the other books in the Think X series) is that if you know how to program, you can use that skill to learn other things. I am writing this book because I think the conventional approach to digital signal processing is backward: most books (and the classes that use them) present the material bottom-up, starting with mathematical abstractions like phasors.\n\nWith a programming-based approach, I can go top-down, which means I can present the most important ideas right away. By the end of the first chapter, you can decompose a sound into its harmonics, modify the harmonics, and generate new sounds.\n\nThink DSP is a Free Book. It is available under the [Creative Commons Attribution-NonCommercial 3.0 Unported License](https://creativecommons.org/licenses/by-nc/3.0/), which means that you are free to copy, distribute, and modify it, as long as you attribute the work and don't use it for commercial purposes.\n\nHere's a notebook that previews what you will see in Chapter 1:\n\n* [chap01preview.ipynb](https://colab.research.google.com/github/AllenDowney/ThinkDSP/blob/master/code/chap01preview.ipynb)\n\nAnd if you want to see where we are headed, here's a preview of Chapter 10:\n\n* [chap10preview.ipynb](https://colab.research.google.com/github/AllenDowney/ThinkDSP/blob/master/code/chap10preview.ipynb)\n\n\n## Running the code\n\nMost of the code for this book is in Jupyter notebooks.\nIf you are not familiar with Jupyter, you can run a tutorial by [clicking here](https://jupyter.org/try).  Then select \"Try Classic Notebook\".  It will open a notebook with instructions for getting started.\n\nTo run the ThinkDSP code, you have several options:\n\nOption 1: Run the notebooks on Google Colab.\n\nOption 2: Run the notebooks on Binder.\n\nOption 3: Use Conda to install the libraries you need and run the notebooks on your computer.\n\nOption 4: Use poetry to install the libraries you need and run the notebooks on your computer.\n\nThe following sections explain these options in detail.\n\nNote: I have heard from a few people who tried to run the code in Spyder.  Apparently there were problems, so I don't recommend it.\n\n### Option 1: Run on Colab\n\nI have recently updated most of the notebooks in this repository so they run on Colab.\n\nYou can open any of them by clicking on the links below.  If you want to modify and save any of them, you can use Colab to save a copy in a Google Drive or your own GitHub repo, or on your computer.\n\n* [chap01.ipynb](https://colab.research.google.com/github/AllenDowney/ThinkDSP/blob/master/code/chap01.ipynb)\n* [chap01soln.ipynb](https://colab.research.google.com/github/AllenDowney/ThinkDSP/blob/master/code/chap01soln.ipynb)\n* [chap02.ipynb](https://colab.research.google.com/github/AllenDowney/ThinkDSP/blob/master/code/chap02.ipynb)\n* [chap02soln.ipynb](https://colab.research.google.com/github/AllenDowney/ThinkDSP/blob/master/code/chap02soln.ipynb)\n* [chap03.ipynb](https://colab.research.google.com/github/AllenDowney/ThinkDSP/blob/master/code/chap03.ipynb)\n* [chap03soln.ipynb](https://colab.research.google.com/github/AllenDowney/ThinkDSP/blob/master/code/chap03soln.ipynb)\n* [chap04.ipynb](https://colab.research.google.com/github/AllenDowney/ThinkDSP/blob/master/code/chap04.ipynb)\n* [chap04soln.ipynb](https://colab.research.google.com/github/AllenDowney/ThinkDSP/blob/master/code/chap04soln.ipynb)\n* [chap05.ipynb](https://colab.research.google.com/github/AllenDowney/ThinkDSP/blob/master/code/chap05.ipynb)\n* [chap05soln.ipynb](https://colab.research.google.com/github/AllenDowney/ThinkDSP/blob/master/code/chap05soln.ipynb)\n* [chap06.ipynb](https://colab.research.google.com/github/AllenDowney/ThinkDSP/blob/master/code/chap06.ipynb)\n* [chap06soln.ipynb](https://colab.research.google.com/github/AllenDowney/ThinkDSP/blob/master/code/chap06soln.ipynb)\n* [chap07.ipynb](https://colab.research.google.com/github/AllenDowney/ThinkDSP/blob/master/code/chap07.ipynb)\n* [chap07soln.ipynb](https://colab.research.google.com/github/AllenDowney/ThinkDSP/blob/master/code/chap07soln.ipynb)\n* [chap08.ipynb](https://colab.research.google.com/github/AllenDowney/ThinkDSP/blob/master/code/chap08.ipynb)\n* [chap08soln.ipynb](https://colab.research.google.com/github/AllenDowney/ThinkDSP/blob/master/code/chap08soln.ipynb)\n* [chap09.ipynb](https://colab.research.google.com/github/AllenDowney/ThinkDSP/blob/master/code/chap09.ipynb)\n* [chap09soln.ipynb](https://colab.research.google.com/github/AllenDowney/ThinkDSP/blob/master/code/chap09soln.ipynb)\n* [chap10.ipynb](https://colab.research.google.com/github/AllenDowney/ThinkDSP/blob/master/code/chap10.ipynb)\n* [chap10soln.ipynb](https://colab.research.google.com/github/AllenDowney/ThinkDSP/blob/master/code/chap10soln.ipynb)\n* [chap11.ipynb](https://colab.research.google.com/github/AllenDowney/ThinkDSP/blob/master/code/chap11.ipynb)\n* [chap11soln.ipynb](https://colab.research.google.com/github/AllenDowney/ThinkDSP/blob/master/code/chap11soln.ipynb)\n\n\n### Option 2: Run on Binder\n\nTo run the code for this book on Binder, press this button:\n\n[![Binder](http://mybinder.org/badge.svg)](http://mybinder.org/repo/AllenDowney/ThinkDSP)\n\nIt takes a minute or so to start up, but then you should see the Jupyter home page with a list of files.  Click on `code` to open the folder with the notebooks, then click on one of the notebooks (with the .ipynb extension).\n\n\n### Option 3: Install Python+Jupyter\n\nFirst, download the files from this repository.  If you are a Git user, you can run\n\n```\ngit clone --depth 1 https://github.com/AllenDowney/ThinkDSP.git\n```\n\nOtherwise you can [download this Zip file](https://github.com/AllenDowney/ThinkDSP/archive/master.zip) and unzip it.\nEither way, you should end up with a directory called `ThinkDSP`.\n\nNow, if you don't already have Jupyter, I highly recommend installing Anaconda, which is a Python distribution that contains everything you need to run the ThinkDSP code.  It is easy to install on Windows, Mac, and Linux, and because it does a\nuser-level install, it will not interfere with other Python installations.\n\n[Information about installing Anaconda is here](https://www.anaconda.com/distribution/).\n\nIf you have the choice of Python 2 or 3, choose Python 3.\n\nThere are two ways to get the packages you need for ThinkDSP.  You can install them by hand or create a Conda environment.\n\nTo install them by hand run\n\n```\nconda install jupyter numpy scipy pandas matplotlib seaborn\n```\n\nOr, to create a conda environment, run\n\n```\ncd ThinkDSP\nconda env create -f environment.yml\nconda activate ThinkDSP\n```\n\n\n### Option 4: Use poetry to manage the project on your computer or notebook locally.\n\nFirst, download the files from this repository.  If you are a Git user, you can run\n\n```\ngit clone --depth 1 https://github.com/AllenDowney/ThinkDSP.git\n```\n\nThen, assuming you have [poetry](https://python-poetry.org) installed on your machine, run\n\n```\ncd ThinkDSP\npoetry install\n```\n\nto install the libraries you need in a virtual environment.  To activate the environment, run\n\n```\npoetry shell\n```\n\nThen you can run Jupyter.\n\n\n## Run Jupyter \n\nTo start Jupyter, run:\n\n```\njupyter notebook\n```\n\nJupyter should launch your default browser or open a tab in an existing browser window.\nIf not, the Jupyter server should print a URL you can use.  For example, when I launch Jupyter, I get\n\n```\n~/ThinkComplexity2$ jupyter notebook\n[I 10:03:20.115 NotebookApp] Serving notebooks from local directory: /home/downey/ThinkDSP\n[I 10:03:20.115 NotebookApp] 0 active kernels\n[I 10:03:20.115 NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/\n[I 10:03:20.115 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).\n```\n\nIn this case, the URL is [http://localhost:8888](http://localhost:8888).\nWhen you start your server, you might get a different URL.\nWhatever it is, if you paste it into a browser, you should see a home page with a list of directories.\n\nClick on `code` to open the folder with the notebooks, then click on one of the notebooks (with the .ipynb extension).\n\nSelect the cell with the import statements and press \"Shift-Enter\" to run the code in the cell.\nIf it works and you get no error messages, **you are all set**.\n\nIf you get error messages about missing packages, you can install the packages you need using your\npackage manager, or install Anaconda.\n\nIf you run into problems with these instructions, let me know and I will make corrections.  Good luck!\n\n\n\n## Freesound\n\nSpecial thanks to Freesound (http://freesound.org), which is the source of many of the\nsound samples I use in this book, and to the Freesound users who\nuploaded those sounds.  I include some of their wave files in\nthe GitHub repository for this book, using the original file\nnames, so it should be easy to find their sources.\n\nUnfortunately, most Freesound users don't make their real names\navailable, so I can only thank them using their user names.  Samples\nused in this book were contributed by Freesound users: iluppai,\nwcfl10, thirsk, docquesting, kleeb, landup, zippi1, themusicalnomad,\nbcjordan, rockwehrmann, marchascon7, jcveliz.  Thank you all!\n\nHere are links to the sources:\n\nhttp://www.freesound.org/people/iluppai/sounds/100475/\n\nhttp://www.freesound.org/people/wcfl10/sounds/105977/\n\nhttp://www.freesound.org/people/Thirsk/sounds/120994/\n\nhttp://www.freesound.org/people/ciccarelli/sounds/132736/\n\nhttp://www.freesound.org/people/Kleeb/sounds/180960/\n\nhttp://www.freesound.org/people/zippi1/sounds/18871/\n\nhttp://www.freesound.org/people/themusicalnomad/sounds/253887/\n\nhttp://www.freesound.org/people/bcjordan/sounds/28042/\n\nhttp://www.freesound.org/people/rockwehrmann/sounds/72475/\n\nhttp://www.freesound.org/people/marcgascon7/sounds/87778/\n\nhttp://www.freesound.org/people/jcveliz/sounds/92002/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAllenDowney%2FThinkDSP","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAllenDowney%2FThinkDSP","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAllenDowney%2FThinkDSP/lists"}