Giter VIP home page Giter VIP logo

pushpin-groovebox's Introduction

Pushpin: The Hackable Groovebox

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

pushpin-groovebox's People

Contributors

aendra-rininsland avatar ffont avatar kingajanicka avatar

Watchers

 avatar  avatar

pushpin-groovebox's Issues

Add sends and mixer section

Will change as we're no longer implementing sends at all. Three FX per track plus master will be more than enough

Add menuing system

Add a pop-up menu system so features like assignable FX, options menu etc can be started

Device and instrument definition improvements

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:

  • Split instrument definitions into separate files, with a file per "page" or two of the instrument.

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

  • New definition files need to be made, one file per device (eg: oscillator setup, filters, amp, effects etc)

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

  • Add a way to have a "macro" knobs within instrument/device definitions

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

  • Add a way to send specific osc commands when a device is initialized

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

  • New definition files should include a way for us to add "paging" to devices

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

  • Devices should be assigned dynamically to their respective slots with the Add Device button

A menu should appear that a user can scroll through to select the device for the slot they're on right now

  • Definitions should reload after a device is added or changed

Currently this is only on start - as we want to swap while pushpin is running we need to change this

  • FXs have slightly different address for values depending which slot they occupy

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

  • Master track is FX only so it will have a different mapping than the synth tracks-

-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

  • Different Oscillator, Filter and waveshaper types should be selectable via Add Device

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).

  • Add a macro page

Possibly by pressing convert

  • Add a Modmatrix page

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

Playhead doubles the speed when play is pressed

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.

add different ranges for labels

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

general menu and state improvents

Those are the "general" improvments needed for 1.0

  • Add a way to load and save presets via the Browse button

This prob needs to work similar to how push 2 browser works in ableton

  • Add a grid that will player allow to select presets per track

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.

  • Add a way to load and save sequences

I don't think this should be too difficult. Just change the state of the arrays that we use for sequencers

  • Add a grid that will allow to swap a sequence per track

Works just like albeton's clip view

  • Make Menu's consistent

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.

  • Make the knob near setup/user buttons be track volume

Global volume will be just master track volume

  • Pressing a page/device button while said is active should bring a subpage

simple enough

  • Fetch current parameter value from surge-xt so we can display "human" values

Currently it's just 0-127 which is just naff. This needs to be humanized to some extent for 1.0

  • Some sort of External audio in, maybe via usb even

So I can use AR with it. We will leave overwitch for later

Map the sequencer to pads

I think elektron like sequencer with seperate sequencers pages for pitch/gate/oct/mute/slide/etc would work best

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.