16 changed files with 202690 additions and 426 deletions
File diff suppressed because one or more lines are too long
@ -0,0 +1,247 @@ |
|||
{ |
|||
"cells": [ |
|||
{ |
|||
"cell_type": "markdown", |
|||
"metadata": {}, |
|||
"source": [ |
|||
"# Analyse non paramétrique du signal de la flute\n", |
|||
"\n", |
|||
"Nous allons commencer par afficher le signals\n", |
|||
"\n", |
|||
"/TODO mettre des labels X/Y avec unités et des titres à toutes les figure" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "code", |
|||
"execution_count": 4, |
|||
"metadata": {}, |
|||
"outputs": [], |
|||
"source": [ |
|||
"using WAV\n", |
|||
"\n", |
|||
"s, fs = wavread(\"../myson.wav\");\n", |
|||
"s = vec(s);\n", |
|||
"t = (0 : 1 : size(s)[1]-1)/fs;\n", |
|||
"fs = floor(Int, fs);\n", |
|||
"\n", |
|||
"t_s = 10 #s\n", |
|||
"trame_period = 0.005 #s\n", |
|||
"\n", |
|||
"floor_freq = 10 #Hz\n", |
|||
"ceil_freq = 60 #Hz\n", |
|||
"\n", |
|||
"number_trame = 50 # trames on each side of t_s\n", |
|||
"overlap = 0.0001;#s\n", |
|||
"\n", |
|||
"N_fft = 2^18- 1; #number points fft" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "code", |
|||
"execution_count": null, |
|||
"metadata": {}, |
|||
"outputs": [], |
|||
"source": [ |
|||
"using Plots\n", |
|||
"plot(t, s, title=\"Son bizarre\",label=[\"Signal\"])" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "markdown", |
|||
"metadata": {}, |
|||
"source": [ |
|||
"Regardons des trames. La taille de trame reste classique : de l'ordre de 20ms.\n", |
|||
"\n", |
|||
"/TODO attention Gabor\n", |
|||
"\n", |
|||
"/TODO FFT avec gros nombre" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "code", |
|||
"execution_count": null, |
|||
"metadata": {}, |
|||
"outputs": [], |
|||
"source": [ |
|||
"#using LinearAlgebra\n", |
|||
"\n", |
|||
"#plot(t_trame, s_trame)" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "code", |
|||
"execution_count": null, |
|||
"metadata": {}, |
|||
"outputs": [], |
|||
"source": [ |
|||
"using FFTW\n", |
|||
"\n", |
|||
"i_s = floor(Int, t_s*fs+1)\n", |
|||
"i_e = floor(Int, i_s+trame_period*fs)\n", |
|||
"t_trame = t[i_s:i_e]\n", |
|||
"s_trame = s[i_s:i_e]\n", |
|||
"\n", |
|||
"# Fourier Transform of it \n", |
|||
"s_pad = zeros(N_fft)\n", |
|||
"s_pad[1:size(s_trame,1), 1:size(s_trame,2)]=s_trame\n", |
|||
"F = fft(s_pad) |> fftshift\n", |
|||
"freqs = fftfreq(N_fft, fs) |> fftshift\n", |
|||
"\n", |
|||
"# plots \n", |
|||
"time_domain = plot(t_trame, s_trame, title = \"Signal\")\n", |
|||
"freq_domain = plot(freqs, abs.(F), title = \"Spectrum\", xlim=(-1000, +1000)) \n", |
|||
"plot(time_domain, freq_domain, layout = 2)" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "code", |
|||
"execution_count": null, |
|||
"metadata": {}, |
|||
"outputs": [], |
|||
"source": [ |
|||
"i_s = floor(Int, t_s*fs-number_trame*trame_period*fs+1)\n", |
|||
"i_e = floor(Int, i_s+2*number_trame*trame_period*fs)\n", |
|||
"t_trame = t[i_s:i_e]\n", |
|||
"s_trame = s[i_s:i_e]\n", |
|||
"\n", |
|||
"# Fourier Transform of it \n", |
|||
"s_pad = zeros(N_fft)\n", |
|||
"s_pad[1:size(s_trame,1), 1:size(s_trame,2)]=s_trame\n", |
|||
"F = fft(s_pad) |> fftshift\n", |
|||
"freqs = fftfreq(N_fft, fs) |> fftshift\n", |
|||
"\n", |
|||
"# plots \n", |
|||
"time_domain = plot(t_trame, s_trame, title = \"Signal\")\n", |
|||
"freq_domain = plot(freqs, abs.(F), title = \"Spectrum\", xlim=(-1000, +1000)) \n", |
|||
"plot(time_domain, freq_domain, layout = 2)" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "markdown", |
|||
"metadata": {}, |
|||
"source": [ |
|||
"On cherche maintenant la fréquence du fondamental. Comme il s'agit d'un instrument à vent, on choisit notre interval de fréquence." |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "code", |
|||
"execution_count": null, |
|||
"metadata": {}, |
|||
"outputs": [], |
|||
"source": [ |
|||
"using WORLD\n", |
|||
"\n", |
|||
"f0, timeaxis = harvest(s, fs, HarvestOption(floor_freq, ceil_freq, trame_period));#floor and ceil freq, period\n", |
|||
"plot(timeaxis, f0)" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "markdown", |
|||
"metadata": {}, |
|||
"source": [ |
|||
"On observe des vibratos, par exemple un gros vibrato vers 5s, un \"fa\". La fréquence du son ne correspond pas exactement à la fréquence du fondamental. On a une modulation de fréquence.\n", |
|||
"\n", |
|||
"/TODO étudier cette modulation de fréquence\n", |
|||
"\n", |
|||
"Regardons un zoom sur un vibrato. \n", |
|||
"\n", |
|||
"/TODO fft du petit bout de signal" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "code", |
|||
"execution_count": null, |
|||
"metadata": {}, |
|||
"outputs": [], |
|||
"source": [ |
|||
"\n", |
|||
"i_s = floor(Int, t_s*fs-number_trame*trame_period*fs+1)\n", |
|||
"i_e = floor(Int, i_s+2*number_trame*trame_period*fs)\n", |
|||
"t_trame = t[i_s:i_e]\n", |
|||
"s_trame = s[i_s:i_e]\n", |
|||
"\n", |
|||
"f0, timeaxis = harvest(s_trame, fs, HarvestOption(floor_freq, ceil_freq, trame_period));#floor and ceil freq, period\n", |
|||
"plot(timeaxis.+t_trame[1], f0)" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "markdown", |
|||
"metadata": {}, |
|||
"source": [ |
|||
"On va s'intéresser maintenant au spectrogramme.\n", |
|||
"\n", |
|||
"\\TODO On choisit une fenêtre XXXX car XXX" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "code", |
|||
"execution_count": null, |
|||
"metadata": {}, |
|||
"outputs": [], |
|||
"source": [ |
|||
"using DSP, PyPlot\n", |
|||
"\n", |
|||
"println(floor(Int, trame_period*fs), floor(Int, overlap*fs))\n", |
|||
"S = spectrogram(s, floor(Int, trame_period*fs), floor(Int, overlap*fs); fs=fs, window=hanning)\n", |
|||
"t = time(S)\n", |
|||
"f = freq(S)\n", |
|||
"imshow(reverse(log10.(power(S)), dims=1), extent=[first(t), last(t), first(f), last(f)], aspect=\"auto\")" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "markdown", |
|||
"metadata": {}, |
|||
"source": [ |
|||
"Zoom sur notre vibrato que l'on voit un peu" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "code", |
|||
"execution_count": null, |
|||
"metadata": {}, |
|||
"outputs": [], |
|||
"source": [ |
|||
"S = spectrogram(s_trame, floor(Int, trame_period*fs), floor(Int, overlap*fs); fs=fs, window=hanning)\n", |
|||
"t = time(S)\n", |
|||
"f = freq(S)\n", |
|||
"imshow(reverse(log10.(power(S)), dims=1), extent=[first(t).+t_trame[1], last(t).+t_trame[1], first(f), last(f)], aspect=\"auto\")" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "code", |
|||
"execution_count": null, |
|||
"metadata": {}, |
|||
"outputs": [], |
|||
"source": [] |
|||
}, |
|||
{ |
|||
"cell_type": "code", |
|||
"execution_count": null, |
|||
"metadata": {}, |
|||
"outputs": [], |
|||
"source": [] |
|||
}, |
|||
{ |
|||
"cell_type": "code", |
|||
"execution_count": null, |
|||
"metadata": {}, |
|||
"outputs": [], |
|||
"source": [] |
|||
} |
|||
], |
|||
"metadata": { |
|||
"kernelspec": { |
|||
"display_name": "Julia 1.2.0", |
|||
"language": "julia", |
|||
"name": "julia-1.2" |
|||
}, |
|||
"language_info": { |
|||
"file_extension": ".jl", |
|||
"mimetype": "application/julia", |
|||
"name": "julia", |
|||
"version": "1.2.0" |
|||
} |
|||
}, |
|||
"nbformat": 4, |
|||
"nbformat_minor": 4 |
|||
} |
|||
File diff suppressed because one or more lines are too long
@ -0,0 +1,247 @@ |
|||
{ |
|||
"cells": [ |
|||
{ |
|||
"cell_type": "markdown", |
|||
"metadata": {}, |
|||
"source": [ |
|||
"# Analyse non paramétrique du signal de la flute\n", |
|||
"\n", |
|||
"Nous allons commencer par afficher le signals\n", |
|||
"\n", |
|||
"/TODO mettre des labels X/Y avec unités et des titres à toutes les figure" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "code", |
|||
"execution_count": 4, |
|||
"metadata": {}, |
|||
"outputs": [], |
|||
"source": [ |
|||
"using WAV\n", |
|||
"\n", |
|||
"s, fs = wavread(\"../myson.wav\");\n", |
|||
"s = vec(s);\n", |
|||
"t = (0 : 1 : size(s)[1]-1)/fs;\n", |
|||
"fs = floor(Int, fs);\n", |
|||
"\n", |
|||
"t_s = 10 #s\n", |
|||
"trame_period = 0.005 #s\n", |
|||
"\n", |
|||
"floor_freq = 10 #Hz\n", |
|||
"ceil_freq = 60 #Hz\n", |
|||
"\n", |
|||
"number_trame = 50 # trames on each side of t_s\n", |
|||
"overlap = 0.0001;#s\n", |
|||
"\n", |
|||
"N_fft = 2^18- 1; #number points fft" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "code", |
|||
"execution_count": null, |
|||
"metadata": {}, |
|||
"outputs": [], |
|||
"source": [ |
|||
"using Plots\n", |
|||
"plot(t, s, title=\"Son bizarre\",label=[\"Signal\"])" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "markdown", |
|||
"metadata": {}, |
|||
"source": [ |
|||
"Regardons des trames. La taille de trame reste classique : de l'ordre de 20ms.\n", |
|||
"\n", |
|||
"/TODO attention Gabor\n", |
|||
"\n", |
|||
"/TODO FFT avec gros nombre" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "code", |
|||
"execution_count": null, |
|||
"metadata": {}, |
|||
"outputs": [], |
|||
"source": [ |
|||
"#using LinearAlgebra\n", |
|||
"\n", |
|||
"#plot(t_trame, s_trame)" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "code", |
|||
"execution_count": null, |
|||
"metadata": {}, |
|||
"outputs": [], |
|||
"source": [ |
|||
"using FFTW\n", |
|||
"\n", |
|||
"i_s = floor(Int, t_s*fs+1)\n", |
|||
"i_e = floor(Int, i_s+trame_period*fs)\n", |
|||
"t_trame = t[i_s:i_e]\n", |
|||
"s_trame = s[i_s:i_e]\n", |
|||
"\n", |
|||
"# Fourier Transform of it \n", |
|||
"s_pad = zeros(N_fft)\n", |
|||
"s_pad[1:size(s_trame,1), 1:size(s_trame,2)]=s_trame\n", |
|||
"F = fft(s_pad) |> fftshift\n", |
|||
"freqs = fftfreq(N_fft, fs) |> fftshift\n", |
|||
"\n", |
|||
"# plots \n", |
|||
"time_domain = plot(t_trame, s_trame, title = \"Signal\")\n", |
|||
"freq_domain = plot(freqs, abs.(F), title = \"Spectrum\", xlim=(-1000, +1000)) \n", |
|||
"plot(time_domain, freq_domain, layout = 2)" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "code", |
|||
"execution_count": null, |
|||
"metadata": {}, |
|||
"outputs": [], |
|||
"source": [ |
|||
"i_s = floor(Int, t_s*fs-number_trame*trame_period*fs+1)\n", |
|||
"i_e = floor(Int, i_s+2*number_trame*trame_period*fs)\n", |
|||
"t_trame = t[i_s:i_e]\n", |
|||
"s_trame = s[i_s:i_e]\n", |
|||
"\n", |
|||
"# Fourier Transform of it \n", |
|||
"s_pad = zeros(N_fft)\n", |
|||
"s_pad[1:size(s_trame,1), 1:size(s_trame,2)]=s_trame\n", |
|||
"F = fft(s_pad) |> fftshift\n", |
|||
"freqs = fftfreq(N_fft, fs) |> fftshift\n", |
|||
"\n", |
|||
"# plots \n", |
|||
"time_domain = plot(t_trame, s_trame, title = \"Signal\")\n", |
|||
"freq_domain = plot(freqs, abs.(F), title = \"Spectrum\", xlim=(-1000, +1000)) \n", |
|||
"plot(time_domain, freq_domain, layout = 2)" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "markdown", |
|||
"metadata": {}, |
|||
"source": [ |
|||
"On cherche maintenant la fréquence du fondamental. Comme il s'agit d'un instrument à vent, on choisit notre interval de fréquence." |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "code", |
|||
"execution_count": null, |
|||
"metadata": {}, |
|||
"outputs": [], |
|||
"source": [ |
|||
"using WORLD\n", |
|||
"\n", |
|||
"f0, timeaxis = harvest(s, fs, HarvestOption(floor_freq, ceil_freq, trame_period));#floor and ceil freq, period\n", |
|||
"plot(timeaxis, f0)" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "markdown", |
|||
"metadata": {}, |
|||
"source": [ |
|||
"On observe des vibratos, par exemple un gros vibrato vers 5s, un \"fa\". La fréquence du son ne correspond pas exactement à la fréquence du fondamental. On a une modulation de fréquence.\n", |
|||
"\n", |
|||
"/TODO étudier cette modulation de fréquence\n", |
|||
"\n", |
|||
"Regardons un zoom sur un vibrato. \n", |
|||
"\n", |
|||
"/TODO fft du petit bout de signal" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "code", |
|||
"execution_count": null, |
|||
"metadata": {}, |
|||
"outputs": [], |
|||
"source": [ |
|||
"\n", |
|||
"i_s = floor(Int, t_s*fs-number_trame*trame_period*fs+1)\n", |
|||
"i_e = floor(Int, i_s+2*number_trame*trame_period*fs)\n", |
|||
"t_trame = t[i_s:i_e]\n", |
|||
"s_trame = s[i_s:i_e]\n", |
|||
"\n", |
|||
"f0, timeaxis = harvest(s_trame, fs, HarvestOption(floor_freq, ceil_freq, trame_period));#floor and ceil freq, period\n", |
|||
"plot(timeaxis.+t_trame[1], f0)" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "markdown", |
|||
"metadata": {}, |
|||
"source": [ |
|||
"On va s'intéresser maintenant au spectrogramme.\n", |
|||
"\n", |
|||
"\\TODO On choisit une fenêtre XXXX car XXX" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "code", |
|||
"execution_count": null, |
|||
"metadata": {}, |
|||
"outputs": [], |
|||
"source": [ |
|||
"using DSP, PyPlot\n", |
|||
"\n", |
|||
"println(floor(Int, trame_period*fs), floor(Int, overlap*fs))\n", |
|||
"S = spectrogram(s, floor(Int, trame_period*fs), floor(Int, overlap*fs); fs=fs, window=hanning)\n", |
|||
"t = time(S)\n", |
|||
"f = freq(S)\n", |
|||
"imshow(reverse(log10.(power(S)), dims=1), extent=[first(t), last(t), first(f), last(f)], aspect=\"auto\")" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "markdown", |
|||
"metadata": {}, |
|||
"source": [ |
|||
"Zoom sur notre vibrato que l'on voit un peu" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "code", |
|||
"execution_count": null, |
|||
"metadata": {}, |
|||
"outputs": [], |
|||
"source": [ |
|||
"S = spectrogram(s_trame, floor(Int, trame_period*fs), floor(Int, overlap*fs); fs=fs, window=hanning)\n", |
|||
"t = time(S)\n", |
|||
"f = freq(S)\n", |
|||
"imshow(reverse(log10.(power(S)), dims=1), extent=[first(t).+t_trame[1], last(t).+t_trame[1], first(f), last(f)], aspect=\"auto\")" |
|||
] |
|||
}, |
|||
{ |
|||
"cell_type": "code", |
|||
"execution_count": null, |
|||
"metadata": {}, |
|||
"outputs": [], |
|||
"source": [] |
|||
}, |
|||
{ |
|||
"cell_type": "code", |
|||
"execution_count": null, |
|||
"metadata": {}, |
|||
"outputs": [], |
|||
"source": [] |
|||
}, |
|||
{ |
|||
"cell_type": "code", |
|||
"execution_count": null, |
|||
"metadata": {}, |
|||
"outputs": [], |
|||
"source": [] |
|||
} |
|||
], |
|||
"metadata": { |
|||
"kernelspec": { |
|||
"display_name": "Julia 1.2.0", |
|||
"language": "julia", |
|||
"name": "julia-1.2" |
|||
}, |
|||
"language_info": { |
|||
"file_extension": ".jl", |
|||
"mimetype": "application/julia", |
|||
"name": "julia", |
|||
"version": "1.2.0" |
|||
} |
|||
}, |
|||
"nbformat": 4, |
|||
"nbformat_minor": 4 |
|||
} |
|||
Binary file not shown.
@ -0,0 +1,443 @@ |
|||
|
|||
% Default to the notebook output style |
|||
|
|||
|
|||
|
|||
|
|||
% Inherit from the specified cell style. |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
\documentclass[11pt]{article} |
|||
|
|||
|
|||
|
|||
\usepackage[T1]{fontenc} |
|||
% Nicer default font (+ math font) than Computer Modern for most use cases |
|||
\usepackage{mathpazo} |
|||
|
|||
% Basic figure setup, for now with no caption control since it's done |
|||
% automatically by Pandoc (which extracts  syntax from Markdown). |
|||
\usepackage{graphicx} |
|||
% We will generate all images so they have a width \maxwidth. This means |
|||
% that they will get their normal width if they fit onto the page, but |
|||
% are scaled down if they would overflow the margins. |
|||
\makeatletter |
|||
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth |
|||
\else\Gin@nat@width\fi} |
|||
\makeatother |
|||
\let\Oldincludegraphics\includegraphics |
|||
% Set max figure width to be 80% of text width, for now hardcoded. |
|||
\renewcommand{\includegraphics}[1]{\Oldincludegraphics[width=.8\maxwidth]{#1}} |
|||
% Ensure that by default, figures have no caption (until we provide a |
|||
% proper Figure object with a Caption API and a way to capture that |
|||
% in the conversion process - todo). |
|||
\usepackage{caption} |
|||
\DeclareCaptionLabelFormat{nolabel}{} |
|||
\captionsetup{labelformat=nolabel} |
|||
|
|||
\usepackage{adjustbox} % Used to constrain images to a maximum size |
|||
\usepackage{xcolor} % Allow colors to be defined |
|||
\usepackage{enumerate} % Needed for markdown enumerations to work |
|||
\usepackage{geometry} % Used to adjust the document margins |
|||
\usepackage{amsmath} % Equations |
|||
\usepackage{amssymb} % Equations |
|||
\usepackage{textcomp} % defines textquotesingle |
|||
% Hack from http://tex.stackexchange.com/a/47451/13684: |
|||
\AtBeginDocument{% |
|||
\def\PYZsq{\textquotesingle}% Upright quotes in Pygmentized code |
|||
} |
|||
\usepackage{upquote} % Upright quotes for verbatim code |
|||
\usepackage{eurosym} % defines \euro |
|||
\usepackage[mathletters]{ucs} % Extended unicode (utf-8) support |
|||
\usepackage[utf8x]{inputenc} % Allow utf-8 characters in the tex document |
|||
\usepackage{fancyvrb} % verbatim replacement that allows latex |
|||
\usepackage{grffile} % extends the file name processing of package graphics |
|||
% to support a larger range |
|||
% The hyperref package gives us a pdf with properly built |
|||
% internal navigation ('pdf bookmarks' for the table of contents, |
|||
% internal cross-reference links, web links for URLs, etc.) |
|||
\usepackage{hyperref} |
|||
\usepackage{longtable} % longtable support required by pandoc >1.10 |
|||
\usepackage{booktabs} % table support for pandoc > 1.12.2 |
|||
\usepackage[inline]{enumitem} % IRkernel/repr support (it uses the enumerate* environment) |
|||
\usepackage[normalem]{ulem} % ulem is needed to support strikethroughs (\sout) |
|||
% normalem makes italics be italics, not underlines |
|||
|
|||
|
|||
|
|||
|
|||
% Colors for the hyperref package |
|||
\definecolor{urlcolor}{rgb}{0,.145,.698} |
|||
\definecolor{linkcolor}{rgb}{.71,0.21,0.01} |
|||
\definecolor{citecolor}{rgb}{.12,.54,.11} |
|||
|
|||
% ANSI colors |
|||
\definecolor{ansi-black}{HTML}{3E424D} |
|||
\definecolor{ansi-black-intense}{HTML}{282C36} |
|||
\definecolor{ansi-red}{HTML}{E75C58} |
|||
\definecolor{ansi-red-intense}{HTML}{B22B31} |
|||
\definecolor{ansi-green}{HTML}{00A250} |
|||
\definecolor{ansi-green-intense}{HTML}{007427} |
|||
\definecolor{ansi-yellow}{HTML}{DDB62B} |
|||
\definecolor{ansi-yellow-intense}{HTML}{B27D12} |
|||
\definecolor{ansi-blue}{HTML}{208FFB} |
|||
\definecolor{ansi-blue-intense}{HTML}{0065CA} |
|||
\definecolor{ansi-magenta}{HTML}{D160C4} |
|||
\definecolor{ansi-magenta-intense}{HTML}{A03196} |
|||
\definecolor{ansi-cyan}{HTML}{60C6C8} |
|||
\definecolor{ansi-cyan-intense}{HTML}{258F8F} |
|||
\definecolor{ansi-white}{HTML}{C5C1B4} |
|||
\definecolor{ansi-white-intense}{HTML}{A1A6B2} |
|||
|
|||
% commands and environments needed by pandoc snippets |
|||
% extracted from the output of `pandoc -s` |
|||
\providecommand{\tightlist}{% |
|||
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} |
|||
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}} |
|||
% Add ',fontsize=\small' for more characters per line |
|||
\newenvironment{Shaded}{}{} |
|||
\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}} |
|||
\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{{#1}}} |
|||
\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} |
|||
\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} |
|||
\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} |
|||
\newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} |
|||
\newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} |
|||
\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{{#1}}}} |
|||
\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{{#1}}} |
|||
\newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}} |
|||
\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{{#1}}} |
|||
\newcommand{\RegionMarkerTok}[1]{{#1}} |
|||
\newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}} |
|||
\newcommand{\NormalTok}[1]{{#1}} |
|||
|
|||
% Additional commands for more recent versions of Pandoc |
|||
\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{{#1}}} |
|||
\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} |
|||
\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} |
|||
\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{{#1}}} |
|||
\newcommand{\ImportTok}[1]{{#1}} |
|||
\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{{#1}}}} |
|||
\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} |
|||
\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} |
|||
\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{{#1}}} |
|||
\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}} |
|||
\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{{#1}}} |
|||
\newcommand{\BuiltInTok}[1]{{#1}} |
|||
\newcommand{\ExtensionTok}[1]{{#1}} |
|||
\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{{#1}}} |
|||
\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{{#1}}} |
|||
\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} |
|||
\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} |
|||
|
|||
|
|||
% Define a nice break command that doesn't care if a line doesn't already |
|||
% exist. |
|||
\def\br{\hspace*{\fill} \\* } |
|||
% Math Jax compatability definitions |
|||
\def\gt{>} |
|||
\def\lt{<} |
|||
% Document parameters |
|||
\title{Analyse-Non-Param-Flute} |
|||
|
|||
|
|||
|
|||
|
|||
% Pygments definitions |
|||
|
|||
\makeatletter |
|||
\def\PY@reset{\let\PY@it=\relax \let\PY@bf=\relax% |
|||
\let\PY@ul=\relax \let\PY@tc=\relax% |
|||
\let\PY@bc=\relax \let\PY@ff=\relax} |
|||
\def\PY@tok#1{\csname PY@tok@#1\endcsname} |
|||
\def\PY@toks#1+{\ifx\relax#1\empty\else% |
|||
\PY@tok{#1}\expandafter\PY@toks\fi} |
|||
\def\PY@do#1{\PY@bc{\PY@tc{\PY@ul{% |
|||
\PY@it{\PY@bf{\PY@ff{#1}}}}}}} |
|||
\def\PY#1#2{\PY@reset\PY@toks#1+\relax+\PY@do{#2}} |
|||
|
|||
\expandafter\def\csname PY@tok@w\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}} |
|||
\expandafter\def\csname PY@tok@c\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} |
|||
\expandafter\def\csname PY@tok@cp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.74,0.48,0.00}{##1}}} |
|||
\expandafter\def\csname PY@tok@k\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} |
|||
\expandafter\def\csname PY@tok@kp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} |
|||
\expandafter\def\csname PY@tok@kt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.69,0.00,0.25}{##1}}} |
|||
\expandafter\def\csname PY@tok@o\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} |
|||
\expandafter\def\csname PY@tok@ow\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}} |
|||
\expandafter\def\csname PY@tok@nb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} |
|||
\expandafter\def\csname PY@tok@nf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} |
|||
\expandafter\def\csname PY@tok@nc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} |
|||
\expandafter\def\csname PY@tok@nn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} |
|||
\expandafter\def\csname PY@tok@ne\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.82,0.25,0.23}{##1}}} |
|||
\expandafter\def\csname PY@tok@nv\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} |
|||
\expandafter\def\csname PY@tok@no\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.53,0.00,0.00}{##1}}} |
|||
\expandafter\def\csname PY@tok@nl\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.63,0.00}{##1}}} |
|||
\expandafter\def\csname PY@tok@ni\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.60,0.60,0.60}{##1}}} |
|||
\expandafter\def\csname PY@tok@na\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.49,0.56,0.16}{##1}}} |
|||
\expandafter\def\csname PY@tok@nt\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} |
|||
\expandafter\def\csname PY@tok@nd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}} |
|||
\expandafter\def\csname PY@tok@s\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} |
|||
\expandafter\def\csname PY@tok@sd\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} |
|||
\expandafter\def\csname PY@tok@si\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}} |
|||
\expandafter\def\csname PY@tok@se\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.13}{##1}}} |
|||
\expandafter\def\csname PY@tok@sr\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}} |
|||
\expandafter\def\csname PY@tok@ss\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} |
|||
\expandafter\def\csname PY@tok@sx\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} |
|||
\expandafter\def\csname PY@tok@m\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} |
|||
\expandafter\def\csname PY@tok@gh\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}} |
|||
\expandafter\def\csname PY@tok@gu\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}} |
|||
\expandafter\def\csname PY@tok@gd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}} |
|||
\expandafter\def\csname PY@tok@gi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}} |
|||
\expandafter\def\csname PY@tok@gr\endcsname{\def\PY@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}} |
|||
\expandafter\def\csname PY@tok@ge\endcsname{\let\PY@it=\textit} |
|||
\expandafter\def\csname PY@tok@gs\endcsname{\let\PY@bf=\textbf} |
|||
\expandafter\def\csname PY@tok@gp\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}} |
|||
\expandafter\def\csname PY@tok@go\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}} |
|||
\expandafter\def\csname PY@tok@gt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}} |
|||
\expandafter\def\csname PY@tok@err\endcsname{\def\PY@bc##1{\setlength{\fboxsep}{0pt}\fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{\strut ##1}}} |
|||
\expandafter\def\csname PY@tok@kc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} |
|||
\expandafter\def\csname PY@tok@kd\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} |
|||
\expandafter\def\csname PY@tok@kn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} |
|||
\expandafter\def\csname PY@tok@kr\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} |
|||
\expandafter\def\csname PY@tok@bp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} |
|||
\expandafter\def\csname PY@tok@fm\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} |
|||
\expandafter\def\csname PY@tok@vc\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} |
|||
\expandafter\def\csname PY@tok@vg\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} |
|||
\expandafter\def\csname PY@tok@vi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} |
|||
\expandafter\def\csname PY@tok@vm\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} |
|||
\expandafter\def\csname PY@tok@sa\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} |
|||
\expandafter\def\csname PY@tok@sb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} |
|||
\expandafter\def\csname PY@tok@sc\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} |
|||
\expandafter\def\csname PY@tok@dl\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} |
|||
\expandafter\def\csname PY@tok@s2\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} |
|||
\expandafter\def\csname PY@tok@sh\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} |
|||
\expandafter\def\csname PY@tok@s1\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} |
|||
\expandafter\def\csname PY@tok@mb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} |
|||
\expandafter\def\csname PY@tok@mf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} |
|||
\expandafter\def\csname PY@tok@mh\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} |
|||
\expandafter\def\csname PY@tok@mi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} |
|||
\expandafter\def\csname PY@tok@il\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} |
|||
\expandafter\def\csname PY@tok@mo\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} |
|||
\expandafter\def\csname PY@tok@ch\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} |
|||
\expandafter\def\csname PY@tok@cm\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} |
|||
\expandafter\def\csname PY@tok@cpf\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} |
|||
\expandafter\def\csname PY@tok@c1\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} |
|||
\expandafter\def\csname PY@tok@cs\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} |
|||
|
|||
\def\PYZbs{\char`\\} |
|||
\def\PYZus{\char`\_} |
|||
\def\PYZob{\char`\{} |
|||
\def\PYZcb{\char`\}} |
|||
\def\PYZca{\char`\^} |
|||
\def\PYZam{\char`\&} |
|||
\def\PYZlt{\char`\<} |
|||
\def\PYZgt{\char`\>} |
|||
\def\PYZsh{\char`\#} |
|||
\def\PYZpc{\char`\%} |
|||
\def\PYZdl{\char`\$} |
|||
\def\PYZhy{\char`\-} |
|||
\def\PYZsq{\char`\'} |
|||
\def\PYZdq{\char`\"} |
|||
\def\PYZti{\char`\~} |
|||
% for compatibility with earlier versions |
|||
\def\PYZat{@} |
|||
\def\PYZlb{[} |
|||
\def\PYZrb{]} |
|||
\makeatother |
|||
|
|||
|
|||
% Exact colors from NB |
|||
\definecolor{incolor}{rgb}{0.0, 0.0, 0.5} |
|||
\definecolor{outcolor}{rgb}{0.545, 0.0, 0.0} |
|||
|
|||
|
|||
|
|||
|
|||
% Prevent overflowing lines due to hard-to-break entities |
|||
\sloppy |
|||
% Setup hyperref package |
|||
\hypersetup{ |
|||
breaklinks=true, % so long urls are correctly broken across lines |
|||
colorlinks=true, |
|||
urlcolor=urlcolor, |
|||
linkcolor=linkcolor, |
|||
citecolor=citecolor, |
|||
} |
|||
% Slightly bigger margins than the latex defaults |
|||
|
|||
\geometry{verbose,tmargin=1in,bmargin=1in,lmargin=1in,rmargin=1in} |
|||
|
|||
|
|||
|
|||
\begin{document} |
|||
|
|||
|
|||
\maketitle |
|||
|
|||
|
|||
|
|||
|
|||
\section{Analyse non paramétrique du signal de la |
|||
flute}\label{analyse-non-paramuxe9trique-du-signal-de-la-flute} |
|||
|
|||
Nous allons commencer par afficher le signals |
|||
|
|||
/TODO mettre des labels X/Y avec unités et des titres à toutes les |
|||
figure |
|||
|
|||
\begin{Verbatim}[commandchars=\\\{\}] |
|||
{\color{incolor}In [{\color{incolor}46}]:} \PY{k}{using} \PY{n}{WAV} |
|||
|
|||
\PY{n}{s}\PY{p}{,} \PY{n}{fs} \PY{o}{=} \PY{n}{wavread}\PY{p}{(}\PY{l+s}{\PYZdq{}}\PY{l+s}{.}\PY{l+s}{.}\PY{l+s}{/}\PY{l+s}{f}\PY{l+s}{l}\PY{l+s}{u}\PY{l+s}{t}\PY{l+s}{e}\PY{l+s}{i}\PY{l+s}{r}\PY{l+s}{c}\PY{l+s}{a}\PY{l+s}{m}\PY{l+s}{.}\PY{l+s}{w}\PY{l+s}{a}\PY{l+s}{v}\PY{l+s}{\PYZdq{}}\PY{p}{)}\PY{p}{;} |
|||
\PY{n}{s} \PY{o}{=} \PY{n}{vec}\PY{p}{(}\PY{n}{s}\PY{p}{)}\PY{p}{;} |
|||
\PY{n}{t} \PY{o}{=} \PY{p}{(}\PY{l+m+mi}{0} \PY{o}{:} \PY{l+m+mi}{1} \PY{o}{:} \PY{n}{size}\PY{p}{(}\PY{n}{s}\PY{p}{)}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{]}\PY{o}{\PYZhy{}}\PY{l+m+mi}{1}\PY{p}{)}\PY{o}{/}\PY{n}{fs}\PY{p}{;} |
|||
\PY{n}{fs} \PY{o}{=} \PY{n}{floor}\PY{p}{(}\PY{k+kt}{Int}\PY{p}{,} \PY{n}{fs}\PY{p}{)}\PY{p}{;} |
|||
\end{Verbatim} |
|||
|
|||
|
|||
\begin{Verbatim}[commandchars=\\\{\}] |
|||
{\color{incolor}In [{\color{incolor}47}]:} \PY{k}{using} \PY{n}{Plots} |
|||
\PY{n}{plot}\PY{p}{(}\PY{n}{t}\PY{p}{,} \PY{n}{s}\PY{p}{,} \PY{n}{title}\PY{o}{=}\PY{l+s}{\PYZdq{}}\PY{l+s}{S}\PY{l+s}{o}\PY{l+s}{n}\PY{l+s}{ }\PY{l+s}{d}\PY{l+s}{e}\PY{l+s}{ }\PY{l+s}{f}\PY{l+s}{l}\PY{l+s}{u}\PY{l+s}{t}\PY{l+s}{e}\PY{l+s}{\PYZdq{}}\PY{p}{,}\PY{n}{label}\PY{o}{=}\PY{p}{[}\PY{l+s}{\PYZdq{}}\PY{l+s}{S}\PY{l+s}{i}\PY{l+s}{g}\PY{l+s}{n}\PY{l+s}{a}\PY{l+s}{l}\PY{l+s}{\PYZdq{}}\PY{p}{]}\PY{p}{)} |
|||
\end{Verbatim} |
|||
|
|||
\texttt{\color{outcolor}Out[{\color{outcolor}47}]:} |
|||
|
|||
\begin{center} |
|||
\adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_2_0.pdf} |
|||
\end{center} |
|||
{ \hspace*{\fill} \\} |
|||
|
|||
|
|||
Regardons des trames. La taille de trame reste classique : de l'ordre de |
|||
20ms. |
|||
|
|||
\begin{Verbatim}[commandchars=\\\{\}] |
|||
{\color{incolor}In [{\color{incolor}48}]:} \PY{k}{using} \PY{n}{LinearAlgebra} |
|||
|
|||
\PY{n}{t\PYZus{}s} \PY{o}{=} \PY{l+m+mi}{5} \PY{c}{\PYZsh{}s} |
|||
\PY{n}{trame\PYZus{}period} \PY{o}{=} \PY{l+m+mf}{0.01} \PY{c}{\PYZsh{}s} |
|||
\PY{n}{i\PYZus{}s} \PY{o}{=} \PY{n}{floor}\PY{p}{(}\PY{k+kt}{Int}\PY{p}{,} \PY{n}{t\PYZus{}s}\PY{o}{*}\PY{n}{fs}\PY{o}{+}\PY{l+m+mi}{1}\PY{p}{)} |
|||
\PY{n}{i\PYZus{}e} \PY{o}{=} \PY{n}{floor}\PY{p}{(}\PY{k+kt}{Int}\PY{p}{,} \PY{n}{i\PYZus{}s}\PY{o}{+}\PY{n}{trame\PYZus{}period}\PY{o}{*}\PY{n}{fs}\PY{p}{)} |
|||
\PY{n}{t\PYZus{}trame} \PY{o}{=} \PY{n}{t}\PY{p}{[}\PY{n}{i\PYZus{}s}\PY{o}{:}\PY{n}{i\PYZus{}e}\PY{p}{]} |
|||
\PY{n}{s\PYZus{}trame} \PY{o}{=} \PY{n}{s}\PY{p}{[}\PY{n}{i\PYZus{}s}\PY{o}{:}\PY{n}{i\PYZus{}e}\PY{p}{]} |
|||
\PY{n}{plot}\PY{p}{(}\PY{n}{t\PYZus{}trame}\PY{p}{,} \PY{n}{s\PYZus{}trame}\PY{p}{)} |
|||
\end{Verbatim} |
|||
|
|||
\texttt{\color{outcolor}Out[{\color{outcolor}48}]:} |
|||
|
|||
\begin{center} |
|||
\adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_4_0.pdf} |
|||
\end{center} |
|||
{ \hspace*{\fill} \\} |
|||
|
|||
|
|||
On cherche maintenant la fréquence du fondamental. Comme il s'agit d'un |
|||
instrument à vent, on choisit notre interval de fréquence. |
|||
|
|||
\begin{Verbatim}[commandchars=\\\{\}] |
|||
{\color{incolor}In [{\color{incolor}49}]:} \PY{k}{using} \PY{n}{WORLD} |
|||
|
|||
\PY{n}{floor\PYZus{}freq} \PY{o}{=} \PY{l+m+mi}{300} \PY{c}{\PYZsh{}Hz} |
|||
\PY{n}{ceil\PYZus{}freq} \PY{o}{=} \PY{l+m+mi}{800} \PY{c}{\PYZsh{}Hz} |
|||
|
|||
\PY{n}{f0}\PY{p}{,} \PY{n}{timeaxis} \PY{o}{=} \PY{n}{harvest}\PY{p}{(}\PY{n}{s}\PY{p}{,} \PY{n}{fs}\PY{p}{,} \PY{n}{HarvestOption}\PY{p}{(}\PY{n}{floor\PYZus{}freq}\PY{p}{,} \PY{n}{ceil\PYZus{}freq}\PY{p}{,} \PY{n}{trame\PYZus{}period}\PY{p}{)}\PY{p}{)}\PY{p}{;}\PY{c}{\PYZsh{}floor and ceil freq, period} |
|||
\PY{n}{plot}\PY{p}{(}\PY{n}{timeaxis}\PY{p}{,} \PY{n}{f0}\PY{p}{)} |
|||
\end{Verbatim} |
|||
|
|||
\texttt{\color{outcolor}Out[{\color{outcolor}49}]:} |
|||
|
|||
\begin{center} |
|||
\adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_6_0.pdf} |
|||
\end{center} |
|||
{ \hspace*{\fill} \\} |
|||
|
|||
|
|||
On observe des vibratos, par exemple un gros vibrato vers 5s, un "fa". |
|||
La fréquence du son ne correspond pas exactement à la fréquence du |
|||
fondamental. On a une modulation de fréquence. |
|||
|
|||
/TODO étudier cette modulation de fréquence |
|||
|
|||
Regardons un zoom sur un vibrato. |
|||
|
|||
/TODO fft du petit bout de signal |
|||
|
|||
\begin{Verbatim}[commandchars=\\\{\}] |
|||
{\color{incolor}In [{\color{incolor}50}]:} \PY{n}{number\PYZus{}trame} \PY{o}{=} \PY{l+m+mi}{100} \PY{c}{\PYZsh{} trames on each side of t\PYZus{}s} |
|||
|
|||
\PY{n}{i\PYZus{}s} \PY{o}{=} \PY{n}{floor}\PY{p}{(}\PY{k+kt}{Int}\PY{p}{,} \PY{n}{t\PYZus{}s}\PY{o}{*}\PY{n}{fs}\PY{o}{\PYZhy{}}\PY{n}{number\PYZus{}trame}\PY{o}{*}\PY{n}{trame\PYZus{}period}\PY{o}{*}\PY{n}{fs}\PY{o}{+}\PY{l+m+mi}{1}\PY{p}{)} |
|||
\PY{n}{i\PYZus{}e} \PY{o}{=} \PY{n}{floor}\PY{p}{(}\PY{k+kt}{Int}\PY{p}{,} \PY{n}{i\PYZus{}s}\PY{o}{+}\PY{l+m+mi}{2}\PY{o}{*}\PY{n}{number\PYZus{}trame}\PY{o}{*}\PY{n}{trame\PYZus{}period}\PY{o}{*}\PY{n}{fs}\PY{p}{)} |
|||
\PY{n}{t\PYZus{}trame} \PY{o}{=} \PY{n}{t}\PY{p}{[}\PY{n}{i\PYZus{}s}\PY{o}{:}\PY{n}{i\PYZus{}e}\PY{p}{]} |
|||
\PY{n}{s\PYZus{}trame} \PY{o}{=} \PY{n}{s}\PY{p}{[}\PY{n}{i\PYZus{}s}\PY{o}{:}\PY{n}{i\PYZus{}e}\PY{p}{]} |
|||
|
|||
\PY{n}{f0}\PY{p}{,} \PY{n}{timeaxis} \PY{o}{=} \PY{n}{harvest}\PY{p}{(}\PY{n}{s\PYZus{}trame}\PY{p}{,} \PY{n}{fs}\PY{p}{,} \PY{n}{HarvestOption}\PY{p}{(}\PY{n}{floor\PYZus{}freq}\PY{p}{,} \PY{n}{ceil\PYZus{}freq}\PY{p}{,} \PY{n}{trame\PYZus{}period}\PY{p}{)}\PY{p}{)}\PY{p}{;}\PY{c}{\PYZsh{}floor and ceil freq, period} |
|||
\PY{n}{plot}\PY{p}{(}\PY{n}{timeaxis}\PY{o}{.+}\PY{n}{t\PYZus{}trame}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{]}\PY{p}{,} \PY{n}{f0}\PY{p}{)} |
|||
\end{Verbatim} |
|||
|
|||
\texttt{\color{outcolor}Out[{\color{outcolor}50}]:} |
|||
|
|||
\begin{center} |
|||
\adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_8_0.pdf} |
|||
\end{center} |
|||
{ \hspace*{\fill} \\} |
|||
|
|||
|
|||
On va s'intéresser maintenant au spectrogramme. |
|||
|
|||
\TODO On choisit une fenêtre XXXX car XXX |
|||
|
|||
\begin{Verbatim}[commandchars=\\\{\}] |
|||
{\color{incolor}In [{\color{incolor}53}]:} \PY{c}{\PYZsh{}\PYZpc{}matplotlib inline} |
|||
\PY{k}{using} \PY{n}{DSP}\PY{p}{,} \PY{n}{PyPlot} |
|||
\PY{n}{trame\PYZus{}period} \PY{o}{=} \PY{l+m+mf}{0.01} \PY{c}{\PYZsh{}s} |
|||
\PY{n}{overlap} \PY{o}{=} \PY{l+m+mf}{0.001}\PY{c}{\PYZsh{}s} |
|||
|
|||
\PY{n}{S} \PY{o}{=} \PY{n}{spectrogram}\PY{p}{(}\PY{n}{s}\PY{p}{,} \PY{n}{convert}\PY{p}{(}\PY{k+kt}{Int}\PY{p}{,} \PY{n}{trame\PYZus{}period}\PY{o}{*}\PY{n}{fs}\PY{p}{)}\PY{p}{,} \PY{n}{convert}\PY{p}{(}\PY{k+kt}{Int}\PY{p}{,} \PY{n}{overlap}\PY{o}{*}\PY{n}{fs}\PY{p}{)}\PY{p}{;} \PY{n}{fs}\PY{o}{=}\PY{n}{fs}\PY{p}{,} \PY{n}{window}\PY{o}{=}\PY{n}{hanning}\PY{p}{)} |
|||
\PY{n}{t} \PY{o}{=} \PY{n}{time}\PY{p}{(}\PY{n}{S}\PY{p}{)} |
|||
\PY{n}{f} \PY{o}{=} \PY{n}{freq}\PY{p}{(}\PY{n}{S}\PY{p}{)} |
|||
\PY{n}{imshow}\PY{p}{(}\PY{n}{reverse}\PY{p}{(}\PY{n}{log10}\PY{o}{.}\PY{p}{(}\PY{n}{power}\PY{p}{(}\PY{n}{S}\PY{p}{)}\PY{p}{)}\PY{p}{,} \PY{n}{dims}\PY{o}{=}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{,} \PY{n}{extent}\PY{o}{=}\PY{p}{[}\PY{n}{first}\PY{p}{(}\PY{n}{t}\PY{p}{)}\PY{p}{,} \PY{n}{last}\PY{p}{(}\PY{n}{t}\PY{p}{)}\PY{p}{,} \PY{n}{first}\PY{p}{(}\PY{n}{f}\PY{p}{)}\PY{p}{,} \PY{n}{last}\PY{p}{(}\PY{n}{f}\PY{p}{)}\PY{p}{]}\PY{p}{,} \PY{n}{aspect}\PY{o}{=}\PY{l+s}{\PYZdq{}}\PY{l+s}{a}\PY{l+s}{u}\PY{l+s}{t}\PY{l+s}{o}\PY{l+s}{\PYZdq{}}\PY{p}{)} |
|||
\end{Verbatim} |
|||
|
|||
|
|||
The analogue of IPython's \texttt{\%matplotlib} in Julia is to use the \href{https://github.com/stevengj/PyPlot.jl}{PyPlot package}, which gives a Julia interface to Matplotlib including inline plots in IJulia notebooks. (The equivalent of \texttt{numpy} is already loaded by default in Julia.) |
|||
|
|||
Given PyPlot, the analogue of \texttt{\%matplotlib inline} is \texttt{using PyPlot}, since PyPlot defaults to inline plots in IJulia. |
|||
|
|||
To enable separate GUI windows in PyPlot, analogous to \texttt{\%matplotlib}, do \texttt{using PyPlot; pygui(true)}. To specify a particular gui backend, analogous to \texttt{\%matplotlib gui}, you can either do \texttt{using PyPlot; pygui(:gui); using PyPlot; pygui(true)} (where \texttt{gui} is \texttt{wx}, \texttt{qt}, \texttt{tk}, or \texttt{gtk}), or you can do \texttt{ENV["MPLBACKEND"]=backend; using PyPlot; pygui(true)} (where \texttt{backend} is the name of a Matplotlib backend, like \texttt{tkagg}). |
|||
|
|||
For more options, see the PyPlot documentation. |
|||
|
|||
|
|||
|
|||
|
|||
\begin{Verbatim}[commandchars=\\\{\}] |
|||
{\color{incolor}In [{\color{incolor} }]:} \PY{n}{Zoom} \PY{n}{sur} \PY{n}{notre} \PY{n}{vibrato} \PY{n}{que} \PY{n}{l}\PY{o}{\PYZsq{}}\PY{n}{on} \PY{n}{voit} \PY{n}{un} \PY{n}{peu} |
|||
\end{Verbatim} |
|||
|
|||
|
|||
\begin{Verbatim}[commandchars=\\\{\}] |
|||
{\color{incolor}In [{\color{incolor}52}]:} \PY{n}{S} \PY{o}{=} \PY{n}{spectrogram}\PY{p}{(}\PY{n}{s\PYZus{}trame}\PY{p}{,} \PY{n}{convert}\PY{p}{(}\PY{k+kt}{Int}\PY{p}{,} \PY{n}{trame\PYZus{}period}\PY{o}{*}\PY{n}{fs}\PY{p}{)}\PY{p}{,} \PY{n}{convert}\PY{p}{(}\PY{k+kt}{Int}\PY{p}{,} \PY{n}{overlap}\PY{o}{*}\PY{n}{fs}\PY{p}{)}\PY{p}{;} \PY{n}{fs}\PY{o}{=}\PY{n}{fs}\PY{p}{,} \PY{n}{window}\PY{o}{=}\PY{n}{hanning}\PY{p}{)} |
|||
\PY{n}{t} \PY{o}{=} \PY{n}{time}\PY{p}{(}\PY{n}{S}\PY{p}{)} |
|||
\PY{n}{f} \PY{o}{=} \PY{n}{freq}\PY{p}{(}\PY{n}{S}\PY{p}{)} |
|||
\PY{n}{imshow}\PY{p}{(}\PY{n}{reverse}\PY{p}{(}\PY{n}{log10}\PY{o}{.}\PY{p}{(}\PY{n}{power}\PY{p}{(}\PY{n}{S}\PY{p}{)}\PY{p}{)}\PY{p}{,} \PY{n}{dims}\PY{o}{=}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{,} \PY{n}{extent}\PY{o}{=}\PY{p}{[}\PY{n}{first}\PY{p}{(}\PY{n}{t}\PY{p}{)}\PY{o}{.+}\PY{n}{t\PYZus{}trame}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{]}\PY{p}{,} \PY{n}{last}\PY{p}{(}\PY{n}{t}\PY{p}{)}\PY{o}{.+}\PY{n}{t\PYZus{}trame}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{]}\PY{p}{,} \PY{n}{first}\PY{p}{(}\PY{n}{f}\PY{p}{)}\PY{p}{,} \PY{n}{last}\PY{p}{(}\PY{n}{f}\PY{p}{)}\PY{p}{]}\PY{p}{,} \PY{n}{aspect}\PY{o}{=}\PY{l+s}{\PYZdq{}}\PY{l+s}{a}\PY{l+s}{u}\PY{l+s}{t}\PY{l+s}{o}\PY{l+s}{\PYZdq{}}\PY{p}{)} |
|||
\end{Verbatim} |
|||
|
|||
|
|||
\begin{center} |
|||
\adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_12_0.png} |
|||
\end{center} |
|||
{ \hspace*{\fill} \\} |
|||
|
|||
\begin{Verbatim}[commandchars=\\\{\}] |
|||
{\color{outcolor}Out[{\color{outcolor}52}]:} PyObject <matplotlib.image.AxesImage object at 0x7fac9988bb38> |
|||
\end{Verbatim} |
|||
|
|||
|
|||
% Add a bibliography block to the postdoc |
|||
|
|||
|
|||
|
|||
\end{document} |
|||
|
After Width: | Height: | Size: 171 KiB |
|
After Width: | Height: | Size: 97 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 6.7 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 21 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 3.1 MiB |
Loading…
Reference in new issue