-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsetup.sh
139 lines (106 loc) · 4.12 KB
/
setup.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#!/usr/bin/bash
cd /opt
sudo chown -R $USER:$USER /opt
# Download stuff
git clone https://github.com/daniel-hartmann/polvo.git
wget https://github.com/juce-framework/JUCE/releases/download/7.0.12/juce-7.0.12-linux.zip
git clone https://github.com/daniel-hartmann/pi-midi-host
git clone https://github.com/oxesoft/bluez
# Remove unnecessary stuff
sudo systemctl disable cups
sudo apt purge -y wolfram-engine libreoffice* scratch* sonic-pi cups chromium-browser vlc geany thonny
sudo apt autoremove -y
sudo apt-get update -y
sudo apt-get upgrade -y
# Install Polvo and Midi Hub dependencies
sudo apt install git ffmpeg libsndfile1 avahi-daemon pkg-config libhdf5-dev -y
# For compiling Polvo
sudo apt install libasound2-dev libpulse-dev libwebkit2gtk-4.0-dev libgtk-3-dev juce-modules-source -y
## Extract JUCE
unzip -d polvo/ juce-7.0.12-linux.zip
## Install Python 3.9
if ! command -v pyenv &> /dev/null
then
curl https://pyenv.run | bash
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.profile
. ~/.bashrc
. ~/.profile
sudo apt install build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev -y
pyenv install 3.9
pyenv global 3.9
fi
echo "Python 3.9 installed"
# ## Install tensorflow
# curl -L https://github.com/PINTO0309/Tensorflow-bin/releases/download/v2.9.0/tensorflow-2.9.0-cp39-none-linux_aarch64.whl -o tensorflow-2.9.0-cp39-none-linux_aarch64.whl
# pip install --user --break-system-packages tensorflow-2.9.0-cp39-none-linux_aarch64.whl
## Install python requirements
pip install spleeter
# pip install librosa==0.10.1 llvmlite==0.42.0 numba==0.59.1 numpy==1.26.4 spleeter PyAudio pydub pycairo PyGObject
# Install Midi Hub
cd pi-midi-host
## Optimize for power efficiency and fast boot
# sudo cp cmdline.txt /boot/
## Install MIDI autoconnect script
sudo cp connectall.rb /usr/local/bin/
sudo cp 33-midiusb.rules /etc/udev/rules.d/
sudo udevadm control --reload
sudo service udev restart
sudo cp midi.service /lib/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable midi.service
sudo systemctl start midi.service
## FW for older Midisport devices
sudo apt-get install midisport-firmware -y
## Setup MIDI bluetooth
sudo apt-get install -y autotools-dev libtool autoconf
sudo apt-get install -y libasound2-dev
sudo apt-get install -y libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev
cd bluez
./bootstrap
./configure --enable-midi --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var
make
sudo make install
cd ..
sudo cp 44-bt.rules /etc/udev/rules.d/
sudo udevadm control --reload
sudo service udev restart
sudo cp btmidi.service /lib/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable btmidi.service
sudo systemctl start btmidi.service
## Create alias to show connected devices
echo >> ~/.bashrc
echo "alias midi='aconnect -l'" >> ~/.bashrc
echo >> ~/.bashrc
## Create alias to reconnect devices
echo >> ~/.bashrc
echo "alias connect='connectall.rb'" >> ~/.bashrc
echo >> ~/.bashrc
# Install Polvo
cd /opt/polvo/Polvo/Builds/LinuxMakefile
make
mkidir -p ~/.config/autostart
cp polvo.desktop ~/.config/autostart
# sudo cp config.txt /boot/
## Make device identifiable more easily on the network
sudo sed -i -- 's/raspberrypi/polvo/g' /etc/hostname /etc/hosts
sudo hostname polvo
## Change resolution
export DISPLAY=:0
resolution="800 480 60"
modename="POLVO_800x480_60"
display=$(xrandr | grep -Po '.+(?=\sconnected)')
xrandr --newmode $modename $(gtf $(echo $resolution) | grep -oP '(?<="\s\s).+')
xrandr --addmode $display $modename
xrandr --output $display --mode $modename
systemctl --user enable pulseaudio
systemctl --user start pulseaudio
read -p "Press [enter] to reboot"
sudo reboot