Foxdot

Latest version: v0.8.12

Safety actively analyzes 688931 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 4 of 11

0.5.9

- Player `stutter` method no longer updates the internal "key" so improves efficiency when using it.
- Better handling of delays in `offadd` and `offlayer` pattern methods

0.5.8

- Fixed panning issues on many SynthDefs so `fmod` spreads a signal across 2 channels effectively.
- Added the ability to use `Pattern` methods on player attributes when using the `every` method:
python
d1 >> play("x-o-o", dur=PDur(5,8)).every(4, "rate.offadd", 2)

- Improved `every` to switch pattern methods on/off at the correct time when using a list of durations.
- FoxDot UI no longer crashes when saving / closing after using a lambda character.

0.5.6

- Running FoxDot with a `--pipe` flag is compatible with Python 2
- Updated the "pads" SynthDef
- Old unidirectional server manager class can be used by editing config file.

0.5.5

- Fix `TimeVar` class so it no longer inherits from `Repeatable` i.e. no longer has access to the "every" method.
- Fix pattern bug when creating a pattern using the `P` generator; `P[P(0,2)]` no longer returns `P[0, 2]`. However, `P[(0,2)]` is interpreted exactly as `P[0, 2]` and will return that instead.
- Added more variation to the "formantFilter" effect
- "loop" samples are added "on-the-fly" as opposed to loaded at start up. These can be loaded by filepath (with or without extension)
python
a1 >> loop("/path/to/sample.wav")
a2 >> loop("/path/to/sample")

a1 >> loop("yeah") Searches recursively for yeah.(wav|wave|aif|aiff|flac)
a1 >> loop("perc/kick") Supports directories in the path
a1 >> loop("*kick*", sample=2) Supports * ? [chars] and [!chars]
a1 >> loop("**/*_Em") Supports ** as 'recursively all subdirectories'

0.5.4

- Better communication from external processes. Running FoxDot with a `--pipe` flag (e.g. `python -m FoxDot --pipe`) allows commands to be written via the stdin. Each command should end with a blank line.

0.5.3

- Player attribute aliases added. Using `pitch` and `char` will return a player's `degree` attribute.
- Player Key behaviour improved. Using multiple conditions e.g. `4 < p1.pitch < 7` will hold the value 1 while `p1.pitch` is between 4 and 7, and a 0 otherwise. These conditions can be "mapped" to values other than 1 by using the `map` method to map values, or results of functions, to other values/functions (which are applied to the values):
python
b1 >> bass(var([0,4,5,3]))
Takes a dictionary of values / functions
p1 >> pads(b1.pitch.map(
{ 0: 2,
4: lambda x: x + P(0,2),
lambda x: x in (5,3): lambda y: y + PRand([0,2,4,7])
}))

- Known issue: mapping to a pattern of values for a Player's duration does not work as expected so be careful.
- The `Player.every` method can now take `Pattern` methods, which affect the degree of the `Player` (specifying attributes will be added later). Instead of applying the function every time it is called, it has a switch that applies the function then "un-applies" the function.
python
p1 >> play("x-i-").every(6, "amen").every(8, "palindrome")

Page 4 of 11

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.