ODETE.SYS — Formant Voice & Singing Lab
Odete is a playful electronic mouth: a retro laboratory that turns text and musical notes into a synthetic voice. Its sound is built with formant synthesis, inspired by the early days of computer speech and singing.
From a buzz to a voice
The engine follows a source–filter model. A train of synthetic glottal pulses provides the voiced excitation, while noise contributes breath and friction to consonants. The pulse repetition rate sets the fundamental frequency, F0: the pitch you hear. The signal then passes through three resonant filters that approximate the vocal tract. Their resonances, called formants (F1, F2 and F3), shape the vowel. Change the formants while keeping F0 fixed, and the same note can sound like “ah”, “ee” or “oo”.
Making the mouth sing
Text is mapped to a sequence of speech sounds. In singing mode, each syllable is paired with a note and a duration: the note sets F0, and the tempo turns beats into seconds. Consonants stay short while vowels carry the sustained notes. Smooth transitions between sounds help join the phrase. You can edit syllables, pronunciation, notes and rhythm, import a monophonic MIDI melody, and export the result as WAV audio or MIDI note data.
Synthesis runs locally in your browser. The phonetic rules are deliberately simple, so pronunciation remains experimental. Explore the source–filter idea in the Praat documentation.
Multi-Timbre Synthesizer
This synthesizer was built as a Program Exercise (EP) to Computer Music class, from the Institute of Mathematics and Statistics of the University of São Paulo / BR, by professor Dr. Marcelo Queiroz.
How do I download Pure Data?
Miller S. Puckette's "vanilla" distribution of PdLast release: Pure Data 0.51-3
Released 20/11/2020
Required extensions: Zexy
Download
If you have a synth keyboard, plug it into you computer and follow this steps.
Else if, you don't have a keyboard, see this instructions.
Else if, you want to build a QWERTY synth keybord, see this Youtube video from LWM Music channel.
Source code
Musicam - Webcam based digital instrument
Digital instrument based on oscilator's frequency manipulation using Webcam images
Source code
Required extensions
Windows and MAC users: If you want to run this patch quickly, you can download the DMG packages or the EXE installer of Purr-Data HERE.
Performances
By Claudinei Sevegnani (click on images to see)
Mandelbrot Fractal
Performance test using different parallel configurations.
Source code
This work contains some of programs-exercises of class MAC5742 - Introduction to Concurrent, Parallel and Distributed Programming (2020) - Institute of Mathematics and Statistics, São Paulo University (IME-USP).
Authors
Carlos Eduardo Leal de Castro (me)
Felipe de Lima Peressim
José Luiz Maciel Pimenta
Luis Ricardo Manrique
Rafael Fernandes Alencar
Description
The Mandelbrot Set is the set of all complex points \(\mathbb{C}\) such that the sequence \( \{z_n\}_{n\in(\mathbb{N}\cup\{0\})} \), given by \(z_{n+1}=z_n^2+c\), with \(z_0=c\in\mathbb{C}\), where this sequence remains bounded. That is, for any \(z\in\mathbb{C}\) that remains on this set, there \( \exists R_{max} \) such that \(\vert z \vert \leq R_{max}\).
Performance tests
We did performance tests to compare all the methods used here: sequential, pthreads, openmp, openmpi, cuda, openmpi+openmp and openmpi+cuda. In these experiments, we measure the average time of 15 executions on each method, varying 3 different parameters:
- Dimensions (x,y) of grid and blocks (CUDA);
- Number of Threads (Pthreads and OMP);
- Number of processes (OMPI).
| Algorithm | Executions |
|---|---|
| Sequential | --- |
| OpenMP | 1 to \(2^{10}\) threads |
| Pthreads | 1 to \(2^{10}\) threads |
| CUDA | \(2^2\) a \(2^{6}\) clock size |
| CUDA+OpenMPI (one node) | Block size \(n = (2,4,...,32)\), for each \(n, \ 2^2\) to \(2^6\) clock size |
| CUDA+OpenMPI (two nodes) | Block size \(n = (2,4,...,64)\) in two nodes, each one with \(\frac{n}{2}\) processes, for each \(n, \ 2^2\) to \(2^6\) block size |
| OpenMPI (two nodes) | Block size \(n = (2,4,...,32)\) |
| OpenMPI (two nodes) | Block size \(n = (2,4,...,64)\) in two nodes, with \(\frac{n}{2}\) processes each |
| OpenMPI+OpenMP (one node) | Block size \(n = (2,4,...,32)\), for each \(n, \ 2^2\) to \(2^6\) threads |
| OpenMPI+OpenMP (two nodes) | Block size \(n = (2,4,...,64)\) in two nodes, with \(\frac{n}{2}\) processes each and, for each \(n\) we have \(2^2\) to \(2^6\) threads |