Linux distribution for creating a portable electronic instrument using a Raspberry Pi and an Ableton Push 2
Coming Soon
Please see temporary site at https://pushpin.kinga.dev
WIP Groovebox project using Push 2 as a control surface and interface and Raspberry Pi for hosting
License: MIT License
Coming Soon
Please see temporary site at https://pushpin.kinga.dev
this is due to a bug with pads needing midi and midi bindings to register correctly
This will be needed to include more advanced features like assignable FX and different oscillator types
stuff like, osc FM, extend range of pitch on oscillators, turn on filter feedback etc
in order to get to MVP we need a way to sequence pitch and not just gate
Will change as we're no longer implementing sends at all. Three FX per track plus master will be more than enough
using the /q/all_params
command
I think it's down to my janky implementation of Isobar timeline object in sequencer.py
and the action/lambda. A less cobbled together code will run well
Add a pop-up menu system so features like assignable FX, options menu etc can be started
Use control_value_label_maps
to put labels on different filter modes, filter modes, filter configs and waveshaper types
I think we need another XOR group made for modes that don't take over the pads. Seems to work fine with the settings mode thou
As all surge instances are the same in implementation but differ dynamically we need to change how instrument mappings work. Currently those are static. Changes that need to be made are as follows:
This way we can swap oscillator types, effect types and maybe even filter types depending on what user wants.I am somewhat set on two oscillator with third by pressing both oscillator buttons and dual filter setup but we could possibly look into having a one page filter and one page oscillator device so people can have more FX at the same time
Those files will define how pushpin is mapped to Surge-xt. I will write those definitions myself, as a 95% of the work is design work figuring out where to put values, what to include, what to ommit etc
The new files should have the ability to abstract several different OSC commands under one knob. This would allow us to create abstractions of the synth engine - enabling making our own "machines" ala elektron rytm/machinedrum. Such a feature would be very useful for making pushpin into a drum machine and go a long way to having me perform with just it. Bonus point if it has curve settings for interpolation - could be done by having keywords or maybe numbers in the json along with additional functionality for it in the send_osc
This would be needed for the "wrapper" devices so we know the state of certain parameters like envelopes etc. Would also be useful for stuff like enabling coarse osc tuning etc
This would enable more intuitive layouts of devices with for example three band EQ. How a page would work is you'd have one knob scroll through the pages, while next X knobs would be paged and swap depending on position of the knob controlling the paging
A menu should appear that a user can scroll through to select the device for the slot they're on right now
Currently this is only on start - as we want to swap while pushpin is running we need to change this
We need to have a different way of keeping addresses for those three slots. Assembling the entire address when we know the slot plus param name won't be hard at all
-With all of the changes outlined above making it so master has a different devices should not be hard at all
Deprecated because we will do 8x8 matrix mixer for inputs instead - so any track will be able to process audio
There's tons of filter types, tons of waveshaper types so this helps us group them into more sensible categories. With filters we could have Add Device menu for filter type (eg: ladder, k35, diode etc), a knob menu for response/slope and another knob menu for character(eg: pushed, 1 stage OJD). With waveshapers we could have Add device for category (eg: saturator, rectifier) and a knob menu for subcategory (eg:soft, medium, full wave rectifier etc).
Possibly by pressing convert
described in the doc, it's gonna be tons of work for sure
This is the bulk of the work that needs to be done for us to be able to use effects in pushpin
each time play is pressed after the first, it doubles in speed. Def an issue but I don't think it's anything to even bother fixing. The way playhead works will have to be re-written to grab index from the sequence (that we put there ourselves) so this won't be an issue anymore.
so for example you can set range of values at both ends of the label, make the displayed values int or float. I think this will mean adding another column to the instrument definitions
Function self.is_midi_note_being_played() always returns False as if pads are not being pressed when they are. I'm guessing this is related to async, because it worked before we added the clock/tick
There is a bug with how osc data is being sent - seems it is being sent but not on the track seq is active on but on currently selected one
Those are the "general" improvments needed for 1.0
This prob needs to work similar to how push 2 browser works in ableton
This grid would appear after Browse (or maybe other button) is pressed. It would work like the clip grid in Live/Push except it would swap presets selected for said pads. Would be good for performing as sounds would be 100% separate from the sequencers. Without any global kits one could change just one or two sounds at a time to evolve the composition naturally.
I don't think this should be too difficult. Just change the state of the arrays that we use for sequencers
Works just like albeton's clip view
Very important - relative position should always be the same for all tracks. If you're at Osc page you should be at that page when you swap. This will become more complicated once we add one page oscillator and filter devies, but not by much. We could also check for what devices next track has and if you're trying to access 2nd osc when there is one, or 5th effect where there are three, just give last one. Need to see which option would be easier for people to understand.
Global volume will be just master track volume
simple enough
Currently it's just 0-127 which is just naff. This needs to be humanized to some extent for 1.0
So I can use AR with it. We will leave overwitch for later
We need to find a way to have a mixer for inputs into a track, kinda like OTs thru. That way we can make our own sends and master track, could even chain tracks for more complex sounds
Certain buttons are turned off when the menu is active, we want all other buttons to be active
so that you keep the same page moving between the instrument pages (like on elektron) instead of having them switch in a push like manner where page you're on is saved per track
I think elektron like sequencer with seperate sequencers pages for pitch/gate/oct/mute/slide/etc would work best
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.