Git Product home page Git Product logo

miditracker's People

Contributors

amitzkus avatar zuggamasta avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

l3kn

miditracker's Issues

Screensaver

Similar to Visualizer, but does not need any song to be present.

Visualizer

Switch into a Visualizer mode where outgoing notes are displayed in a way that they're interesting to look at:

-> Waterfall, all notes dropping from top to bottom
-> Fireworks, each channel randomly spawns tiny animation in it's color

Select Midi Device

Currently only the first MIDI device will receive midi data. Add a midi Device selection in the config tab.

Show channel activity

Proposal: show activity on the right hand side as most rows of the raspberry pi are already in use

"deep copy" does copy by reference instead of filling new pattern.

This still does copy by reference in "deepcopy" and "flood" even with copy(). But my regular "copy" and "past" works well.

midiTracker/midiTracker.py

Lines 272 to 308 in 3a4e675

if key == KEYMAP["copy"]:
if current_screen == 3:
return
copy_buffer = copy(data[active_data][cursor[0]][cursor[1]] )
if key == KEYMAP["deepcopy"]:
if current_screen != 2:
return
deep_copy_buffer = copy(data[active_data])
has_deep_copy = True
if key == KEYMAP["paste"]:
if current_screen == 3:
return
data[active_data][cursor[0]][cursor[1]] = copy(copy_buffer)
if key == KEYMAP["flood"]:
if has_deep_copy:
data[active_data] = copy(deep_copy_buffer)
has_deep_copy = False
else:
flood_length = 0
if current_screen == 0:
flood_length = MAX_SONG_STEPS
elif current_screen == 1:
flood_length = MAX_CHAIN_STEPS
elif current_screen == 2:
flood_length = MAX_PHRASE_STEPS
elif current_screen == 3:
flood_length = 0
for i in range(flood_length):
data[active_data][cursor[0]][i] = copy(copy_buffer)
shift_mod_a = False
shift_mod_b = False

"deepcoping" a phrase should no link it to the original. When changing the new pattern later the original pattern needs to stay untouched.

Support Modifiers for phrases

Modifiers apply a modification to the note on their left.

Note Modifiers:

  • 'S' - Staccato, length Play note only for fixed amount of time
  • 'T' - reTrigger, divider Retrigger the current note instead of playing it just once, amount is given by divider. 2 -> twice 4 -> four times
  • 'H' - Hold note Do not set stop note until next input.
  • 'R' - Random, range play a random note in the range up and down from the set note. E.g. base note 'C 5'

Step modifiers

  • 'B' - Backwards, speed Step backwards in the phrase chain until the start is hit, manipulate backwards speed
  • 'J' - Jump, frequency, randomly skip this step '

midiTracker crashes if screen is to small

When running midiTracker one a CLI with less than MAX STEPS (usually 16) + 3 lines height the app will crash.

This should be resolved by using a pad/window system.

Save Project Data as JSON

To make the data more usable and editable with other tools JSON could be a first step.

  • import json

Flood note values

flood notes to all slots below the current selected note with that note.

UnboundLocalError: local variable 'available_ports' referenced before assignment

hello,
i'm using Python 3.10.12 on linux (mint 21.3) and I've setup the venv environement according to the manual there https://github.com/zuggamasta/midiTracker/wiki/01-Installing-midiTracker-(Beginner-Friendly)

after starting miditracker with python3 midiTracker.py, I saw the logo moving to the left, and then it crashed saying:

Traceback (most recent call last):
  File "/temp/github/music/midiTracker/midiTracker.py", line 994, in <module>
    wrapper(main)
  File "/usr/lib/python3.10/curses/__init__.py", line 94, in wrapper
    return func(stdscr, *args, **kwds)
  File "/temp/github/music/midiTracker/midiTracker.py", line 981, in main
    if not current_screen == 4: draw_info(info_win,available_ports[MIDI_PORT])        
UnboundLocalError: local variable 'available_ports' referenced before assignment

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.