Skip to content

Commit 0339f29

Browse files
committed
Update README
1 parent 5e0988d commit 0339f29

File tree

2 files changed

+28
-16
lines changed

2 files changed

+28
-16
lines changed

README.md

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,37 @@
1-
FoxDot - Live Coding with Python v0.4.14
2-
========================================
1+
FoxDot - Live Coding with Python v0.5.0
2+
=======================================
33

44
FoxDot is a Python programming environment that provides a fast and user-friendly abstraction to SuperCollider. It also comes with its own IDE, which means it can be used straight out of the box; all you need is Python and SuperCollider and you're ready to go!
55

6-
### v0.4.14 fixes and updates
7-
8-
- Pattern getitem method now allows Patterns to be indexed using a Player Key e.g. `P[0,1,2,3][p1.degree]` that will return the item in the Pattern based on the integer values of the key (`p1.degree` in this example).
9-
- Added `future` method. Like `schedule` it adds a callable object to the queue but doesn't need the exact beat occurrence, just how many beats in the future from "now". First argument is time, followed by the object, arguments, and keyword arguments.
10-
- Player object `stop` method properly removes the player from `Clock.playing` list.
11-
- Using Player Key `__getitem__` returns a player key whose calculation function is `__getitem__`. This is useful if you want to use just one of the values of another player if they are in a group. e.g.
6+
### v0.5.0 fixes and updates
127

8+
- Pattern "zipping" behaviour changed. A `PGroup` within a sequence is extended when zipped with another instead of nesting it. e.g.
9+
```python
10+
# Old style
11+
>>> P[(0,1),(2,3)].zip([(4,5)])
12+
P[P(0, 1, P(4, 5)), P(2, 3, P(4, 5))]
13+
# New style
14+
>>> P[(0,1),(2,3)].zip([(4,5)])
15+
P[P(0, 1, 4, 5), P(2, 3, 4, 5)]
16+
```
17+
- Consequently, sample player strings can use the `<>` arrows to play multiple sequences together using one string.
18+
```python
19+
# This plays three patterns together
20+
d1 >> play("<x >< o[ o]>< -(-=)>", sample=(0,1,2))
21+
```
22+
- To use a different sample value for each pattern use a group of values as in the example above. Each value in relates to each pattern e.g. the "x" used sample 0, the "o" pattern uses sample 1 and the "-" pattern uses sample 2. If you want to use multiple values just use a group within a group:
23+
```
24+
# Plays the snare drum in both channels at different rates
25+
d1 >> play("<x x>< o >", pan=(0, (-1,1)), rate=(1, (1,.9))
26+
```
27+
- Network synchronisation introduced! This is still quite a beta feature and feedback would be appreciated if you come across any issues. Here's how to do it:
28+
29+
To connect to another instance of FoxDot over the network you need one user to be the master clock. The master clock user needs to go from the menu to "Language" then "Listen for connections". This will start listening for connections from other FoxDot instances. It will print the IP address and port number to the console; give this information to your live coding partner. They need to run the following code using the IP address on the master clock machine:
1330
```python
14-
p1 >> pads((0,2,4) + var([0,4,5,3]))
15-
b1 >> bass(p1.degree[0]) # Only plays the "root" note of the chord
31+
Clock.connect("<ip address>")
1632
```
33+
This will copy some data, e.g. tempo, from the master clock and also adjust for the differences in local machine time (if your clocks are out of sync). The latter will depend on the latency of the connection between your machines. If you are out of time slightly, set the `Clock.nudge` value to a small value (+-0.01) until the clocks are in sync. Now whenever you change the `Clock.bpm` value, the change will propagate to everyone on the next bar.
1734

18-
- SuperCollider bus number resets to 4 instead of 1 to prevent feedback loops when using reverb.
19-
- Changed "verb" keyword to "mix" for reverb effect. Default is changed from 0.25 to 0.1.
20-
- `GeneratorPattern` `new` method converts the `other` argument to a Pattern so you can use lists/tuples as opposed to just Patterns/PGroups when performing operations e.g. `PWalk() + (0,4)`.
21-
- Fixed `newline` method to only add an indent if the INSERT index was in brackets or following a colon instead of doing so if the line had open brackets / colon. Evaluated code no longer highlights any empty preceeding lines.
22-
- Python 3 uses xrange as range
2335

2436
---
2537

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from distutils.core import setup
44

55
setup(name='FoxDot',
6-
version='0.4.14',
6+
version='0.5.0',
77
description='Live Coding with SuperCollider',
88
author='Ryan Kirkbride',
99
author_email='ryan@foxdot.org',

0 commit comments

Comments
 (0)