Thanks! I had the chance to play with a friend’s mac today and install pippi. I think I’ll add OSX specific instructions to the readme since the install process is different enough…

Anyway I also finally fixed the default config import issue so you will be able to install without having to manually copy that file now!

I noticed that on my friend’s machine which is running the latest version of the macos – 10.11 I think? – I’m seeing a warning from portaudio that it’s using a deprecated interface to osx audio units or something when opening a stream. Have you seen any warnings in the interactive console when opening a stream? (Playing a pippi instrument / generator script.)

Default config is now fine – I get a ~/pippi.config – and I don’t see those warnings about the deprecated interface. I wonder if that’s an OS version issue (I’m running 10.9.5) or something about how portaudio was installed (I ran “brew install portaudio” and “pip install pyaudio” in a virtualenv).

I still get a non-fatal IO error about the non-existent MIDI port, and I saw another (fatal) IO error when I typed “play sample 3” instead of “play example 3” – I might send you some pull requests about error handling, if that’s okay.

Thanks, that would be great – there is a lot of work left to do with error handling all over, development tends to happen in spurts before rehearsals and the like. :slight_smile:

On my friend’s computer I’m getting really unstable behavior with both portmidi and rtmidi backends that I can’t reproduce on linux. (I was also using the homebrew packages)

I added a bit more error handling for MIDI recently. I’d love any help with error handling & tests you have time for! I plan to flesh out the test suite a lot, it’s mostly just a handful of checks for pitch handling stuff in the tune module right now…

The python package index distribution is now up to date with github. I’ll start publishing new releases every weekend through the end of July. https://pypi.python.org/pypi/pippi

1 Like

I had a really great day today.

Deleted a ton of code and added a bunch of functionality.

New release soon, probably tomorrow!

Anyone out there still kicking the tires? :slight_smile:

1 Like

I’m just about to test it out. Will be focused on MIDI - experimenting with using an RPi to run my grids. Looking forward to checking it all out - thanks so much for sharing your work!

1 Like

I love it when things work out that way :slight_smile:

1 Like

Awesome, thanks so much!

Hi everyone. Since this thread, last year I started on a 2.0 branch of pippi which was a total rewrite (except most of the tune.py module) for python3 and a totally different model based on standard python ideas like SoundBuffer and Wavetable data types with operator overloading for expressive manipulation.

Anyway, it’s buggy but I just released alpha 9, and started on beta 1, which is mostly focused on fixing bugs and writing docs.

The project is still on github: http://pippi.world

If you are a python person or otherwise have time to play around with this I’d appreciate beta testers still! Thanks!

3 Likes

Here are a couple random sketches made with pippi 2.0:

https://www.dropbox.com/s/uc96rk7xb2kiwyn/perfume-mix-11.wav?dl=0

https://www.dropbox.com/s/5en8vrgrbvyfax9/stlong.flac?dl=0

2 Likes

I’ll be fiddling with this later today… will report back. Cheers!

1 Like

Pushed a couple bugfixes recently:

2.0.0 - Beta 1 (In Development)
Better overflow handling in SoundBuffer.adsr and wavetables.adsr
Fixed a bug with SoundBuffer.remix when mixing to a single channel

https://github.com/luvsound/pippi#200---beta-1-in-development

Here’s a few more little synthesis sketches with the 2d osc:

https://www.dropbox.com/s/8voa3ghu9q842qw/osc2d_out4.flac?dl=0
https://www.dropbox.com/s/yj0xklcqmx8loa8/osc2d_out3.flac?dl=0
https://www.dropbox.com/s/s2plnigdex40sze/osc2d_out2.flac?dl=0

1 Like

Beta 1 is up on pypi now: https://pypi.org/project/pippi/2.0.0b1/

Changelog:

Features

  • Added fx module
  • Added first pass fx.go granular overdrive effect. See examples/fxgo_example.py for usage.

Bugfixes

  • Fixed a packaging issue preventing the tune module from loading.
  • Better overflow handling in SoundBuffer.adsr and wavetables.adsr
  • Fixed a bug with SoundBuffer.remix when mixing to a single channel
  • Fixed a bug during Wavetable initialization when using wavetable flags to create a window.

Here are renders from all the example scripts in sequence!

https://www.dropbox.com/s/f0vslnkc2ja06jm/example_mix.wav?dl=0

Examples:

https://github.com/luvsound/pippi/tree/master/examples

(venv) shree@shree-linux2:~/pippi$ make test
python -m unittest discover -s tests -p ‘test_*.py’ -v
test_addIntervals (test_chords.TestChords) … ok
test_getChord (test_chords.TestChords) … ok
test_getExtension (test_chords.TestChords) … ok
test_getIntervals (test_chords.TestChords) … ok
test_getQuality (test_chords.TestChords) … ok
test_getRatiofromInterval (test_chords.TestChords) … ok
test_dub_into_empty_sound (test_dub.TestDub) … ok
test_dub_overflow (test_dub.TestDub) … ok
test_graincloud_with_density_lfo (test_graincloud.TestGrainCloud) … ok
test_graincloud_with_length_lfo (test_graincloud.TestGrainCloud) … ok
test_graincloud_with_read_lfo (test_graincloud.TestGrainCloud) … ok
test_graincloud_with_speed_lfo (test_graincloud.TestGrainCloud) … ok
test_maxspeed_graincloud (test_graincloud.TestGrainCloud) … ok
test_minspeed_graincloud (test_graincloud.TestGrainCloud) … ok
test_unmodulated_graincloud (test_graincloud.TestGrainCloud) … ok
test_create_sinewave (test_oscs.TestOscs) … ok
test_create_wt_stack (test_oscs.TestOscs) … ok
test_eu (test_rhythm.TestRhythm) … ok
test_topositions (test_rhythm.TestRhythm) … ok
test_create_empty_ring_buffer (test_ringbuffer.TestRingBuffer) … ok
test_create_ringbuffer_from_soundfile (test_ringbuffer.TestRingBuffer) … ok
test_read_streamed_blocks_from_ringbuffer (test_ringbuffer.TestRingBuffer) … ok
test_stream_blocks_into_ringbuffer_from_soundfile (test_ringbuffer.TestRingBuffer) … ok
test_clip_soundbuffer (test_soundbuffer.TestSoundBuffer) … ok
test_create_buffer_from_soundfile (test_soundbuffer.TestSoundBuffer) … ok
test_create_empty_buffer (test_soundbuffer.TestSoundBuffer) … ok
test_pad_sound_with_silence (test_soundbuffer.TestSoundBuffer) … ok
test_pan (test_soundbuffer.TestSoundBuffer) … ok
test_random_split_buffer (test_soundbuffer.TestSoundBuffer) … ok
test_save_buffer_to_soundfile (test_soundbuffer.TestSoundBuffer) … ok
test_slice_frame (test_soundbuffer.TestSoundBuffer)
A SoundBuffer should return a single frame … ok
test_slice_sample (test_soundbuffer.TestSoundBuffer)
Slicing into the second dimension of a SoundBuffer … ok
test_speed (test_soundbuffer.TestSoundBuffer) … ok
test_split_buffer (test_soundbuffer.TestSoundBuffer) … ok
test_taper (test_soundbuffer.TestSoundBuffer) … ok
test_transpose (test_soundbuffer.TestSoundBuffer) … ok
test_window (test_soundbuffer.TestSoundBuffer) … ok
test_bad_wavetable_type (test_wavetables.TestWavetables) … ok
test_bad_window_type (test_wavetables.TestWavetables) … ok
test_polyseg (test_wavetables.TestWavetables) … sine
<_sre.SRE_Match object; span=(0, 4), match=‘sine’>
None
sine
None
None
1,tri,0-1
<_sre.SRE_Match object; span=(0, 9), match=‘1,tri,0-1’>
1
tri
0
1
rand,0.3-0.8
<_sre.SRE_Match object; span=(0, 12), match=‘rand,0.3-0.8’>
None
rand
0.3
0.8

ERROR
test_randline (test_wavetables.TestWavetables) … ok
test_random_wavetable (test_wavetables.TestWavetables) … ok
test_random_window (test_wavetables.TestWavetables) … ok
test_wtclass (test_wavetables.TestWavetables) … ok

======================================================================
ERROR: test_polyseg (test_wavetables.TestWavetables)

Traceback (most recent call last):
File “/home/shree/pippi/tests/test_wavetables.py”, line 53, in test_polyseg
wt = wavetables.polyseg(score, length)
TypeError: Argument ‘segments’ has incorrect type (expected list, got str)


Ran 44 tests in 1.152s

FAILED (errors=1)
Makefile:4: recipe for target ‘test’ failed
make: *** [test] Error 1

1 Like

Yep, the wavetables.polyseg generator isn’t done. (Working on a concise way to compose wavetables from other wavetables.) There’s a failing test in there on purpose to remind me to finish it! Glad to see all the other tests are passing on your platform. :slight_smile: Looks like linux based on the path to your home dir, do you mind sharing what distro you tested with? (oh duh also the word linux is in your hostname, also a clue haha. so probably running in a vm?)

Thanks!

2 Likes

That’s offputting though (including failing tests in alpha/beta releases)…

Better to call it out in the readme, or disable the tests, or something else?

1 Like

inux shree-linux2 4.4.0-116-lowlatency #140-Ubuntu SMP PREEMPT Mon Feb 12 22:41:05 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

1 Like

Cool, thanks very much!