Raspberry Pi + Rune Audio ::: Một trải nghiệm nghe nhạc mới

tellme0823

Well-Known Member
Có 1 điểm các bác chú ý là khi khởi động lại, ko biết vì lý do gì rất hay treo, chờ hoài không thấy lên, phải tắt nguồn để tầm 2,3 phút rồi bật lại:oops:
 
Chỉnh sửa lần cuối:

tml3nr

Moderator
Có 1 điểm các bác chú ý là khi khởi động lại, ko biết vì lý do gì rất hay treo, chờ hoài không thấy lên, phải tắt nguồn để tầm 2,3 phút bật lại nó mới lên:oops:
Anh trả lại dt-blob.bin gốc xem nó có ít treo hơn và âm thanh có khác nhiều không ạ?
 

tml3nr

Moderator
Em rất thích cách smpd config khi chạy một service nào đó thì sẽ tự động tắt những cái khác. Cực hay.

mpd_event.sh

Mã:
#!/bin/bash

sudo sync
sudo mount -a

if [ $? = 1 ]; then
  exit
fi

# cifs
if [ -e /var/lib/mpd/music/NAS/ ]; then
  sudo taskset -p $CIFS_AFFINITY $(pidof cifsd)
  sudo chrt --fifo -p $CIFS_PRIORITY $(pidof cifsd)
fi

count=0
while [ "$(pstree -ps mpd|grep -o player.* |sed -r 's/^.*}\((.*)\)$/\1/')" = "" ]
do
  sleep 0.1
  let ++count; if [ $count = 100 ]; then break; fi
done
if [ ! $count = 100 ]; then
  mpd=$(pidof mpd)
  io=$(pstree -ps mpd|grep -o io.*  |sed -r 's/^.*}\((.*)\)$/\1/')
  player=$(pstree -ps mpd|grep -o player.* |sed -r 's/^.*}\((.*)\)$/\1/')
  decoder=$(pstree -ps mpd|grep -o decoder.*|sed -r 's/^.*}\((.*)\)$/\1/')
  sudo renice -10 $mpd
  sudo taskset -p 8 $mpd
  sudo chrt --rr -p 1 $io
  sudo chrt --rr -p 1 $player
  sudo chrt --rr -p 50 $decoder
fi

spotify_event.sh

Mã:
#!/bin/bash

pcminfo=/run/pcminfo

case "$PLAYER_EVENT" in

  start)
   # stop playback
   /usr/bin/mpc stop > /dev/null

   # stop mpd
   sudo systemctl stop ympd
   sudo systemctl stop ympd.socket
   sudo systemctl stop mpd
   sudo umount /var/lib/mpd/music/NAS

   # stop shairport-sync
   sudo systemctl stop shairport-sync
   sudo sync
   sleep 0.4
   exit
   ;;

  stop)
   if [ ! "`cat /run/pcminfo |cut -d ' ' -f4`" = "DEFAULT" ];then
     exit
   fi
   # wakeup mpd
   sudo systemctl start ympd.socket
   sudo mount -a
   sudo systemctl start mpd

   # start shairport-sync
   sudo systemctl start shairport-sync
   sudo sync
   exit
   ;;
esac

exit 0

shairport_event.sh

Mã:
#!/bin/bash

case "$1" in

  begin)
   echo "$DEFAULT_SAMPLE_FORMAT 44100 2 AIRPLAY" > /run/pcminfo
   sudo systemctl restart pipe

   # stop mpd
   sudo systemctl stop ympd
   sudo systemctl stop ympd.socket
   sudo systemctl stop mpd
   sudo umount /var/lib/mpd/music/NAS

   # stop spotify-connect
   sudo systemctl stop spotifyd

   sync
   sleep 0.4
   exit
   ;;

  end)
   # wakeup mpd
   sudo systemctl start ympd.socket
   sudo mount -a
   sudo systemctl start mpd

   # wakeup spotify-connect
   sudo systemctl start spotifyd
   sync
   exit
   ;;
esac

exit 0
 
Chỉnh sửa lần cuối:

tellme0823

Well-Known Member
Em rất thích cách smpd config khi chạy một service nào đó thì sẽ tự động tắt những cái khác. Cực hay.

mpd_event.sh

Mã:
#!/bin/bash

sudo sync
sudo mount -a

if [ $? = 1 ]; then
  exit
fi

# cifs
if [ -e /var/lib/mpd/music/NAS/ ]; then
  sudo taskset -p $CIFS_AFFINITY $(pidof cifsd)
  sudo chrt --fifo -p $CIFS_PRIORITY $(pidof cifsd)
fi

count=0
while [ "$(pstree -ps mpd|grep -o player.* |sed -r 's/^.*}\((.*)\)$/\1/')" = "" ]
do
  sleep 0.1
  let ++count; if [ $count = 100 ]; then break; fi
done
if [ ! $count = 100 ]; then
  mpd=$(pidof mpd)
  io=$(pstree -ps mpd|grep -o io.*  |sed -r 's/^.*}\((.*)\)$/\1/')
  player=$(pstree -ps mpd|grep -o player.* |sed -r 's/^.*}\((.*)\)$/\1/')
  decoder=$(pstree -ps mpd|grep -o decoder.*|sed -r 's/^.*}\((.*)\)$/\1/')
  sudo renice -10 $mpd
  sudo taskset -p 8 $mpd
  sudo chrt --rr -p 1 $io
  sudo chrt --rr -p 1 $player
  sudo chrt --rr -p 50 $decoder
fi

spotify_event.sh

Mã:
#!/bin/bash

pcminfo=/run/pcminfo

case "$PLAYER_EVENT" in

  start)
   # stop playback
   /usr/bin/mpc stop > /dev/null

   # stop mpd
   sudo systemctl stop ympd
   sudo systemctl stop ympd.socket
   sudo systemctl stop mpd
   sudo umount /var/lib/mpd/music/NAS

   # stop shairport-sync
   sudo systemctl stop shairport-sync
   sudo sync
   sleep 0.4
   exit
   ;;

  stop)
   if [ ! "`cat /run/pcminfo |cut -d ' ' -f4`" = "DEFAULT" ];then
     exit
   fi
   # wakeup mpd
   sudo systemctl start ympd.socket
   sudo mount -a
   sudo systemctl start mpd

   # start shairport-sync
   sudo systemctl start shairport-sync
   sudo sync
   exit
   ;;
esac

exit 0

shairport_event.sh

Mã:
#!/bin/bash

case "$1" in

  begin)
   echo "$DEFAULT_SAMPLE_FORMAT 44100 2 AIRPLAY" > /run/pcminfo
   sudo systemctl restart pipe

   # stop mpd
   sudo systemctl stop ympd
   sudo systemctl stop ympd.socket
   sudo systemctl stop mpd
   sudo umount /var/lib/mpd/music/NAS

   # stop spotify-connect
   sudo systemctl stop spotifyd

   sync
   sleep 0.4
   exit
   ;;

  end)
   # wakeup mpd
   sudo systemctl start ympd.socket
   sudo mount -a
   sudo systemctl start mpd

   # wakeup spotify-connect
   sudo systemctl start spotifyd
   sync
   exit
   ;;
esac

exit 0
Khi đang chơi nhạc nó tắt sạch, đỉnh thật:eek: nghe spotify thôi cũng thấy phê.
C24Gut.png
 

tellme0823

Well-Known Member
add nas như nào bác, em làm hoài mà chả được. em xài Fifo Pi thì cần cài đặt như nào ah. thanks bác
Nas mình chưa thử, còn cấu hình thì có 2 mode slave và master. Master xài clock của board slave xài lock của pi, tuỳ con board của bác có lock rời hay không mà chọn tương ứng. Nếu chọn master bác phải đổi file bin.master thành file bin. Còn tên board bác chọn trong thiết định soundcard, mình cũng ko biết có board fifo của bác ko, tối về mình xem lại thử
 

dungsin_lqd

Well-Known Member
Em rất thích cách smpd config khi chạy một service nào đó thì sẽ tự động tắt những cái khác. Cực hay.

mpd_event.sh

Mã:
#!/bin/bash

sudo sync
sudo mount -a

if [ $? = 1 ]; then
  exit
fi

# cifs
if [ -e /var/lib/mpd/music/NAS/ ]; then
  sudo taskset -p $CIFS_AFFINITY $(pidof cifsd)
  sudo chrt --fifo -p $CIFS_PRIORITY $(pidof cifsd)
fi

count=0
while [ "$(pstree -ps mpd|grep -o player.* |sed -r 's/^.*}\((.*)\)$/\1/')" = "" ]
do
  sleep 0.1
  let ++count; if [ $count = 100 ]; then break; fi
done
if [ ! $count = 100 ]; then
  mpd=$(pidof mpd)
  io=$(pstree -ps mpd|grep -o io.*  |sed -r 's/^.*}\((.*)\)$/\1/')
  player=$(pstree -ps mpd|grep -o player.* |sed -r 's/^.*}\((.*)\)$/\1/')
  decoder=$(pstree -ps mpd|grep -o decoder.*|sed -r 's/^.*}\((.*)\)$/\1/')
  sudo renice -10 $mpd
  sudo taskset -p 8 $mpd
  sudo chrt --rr -p 1 $io
  sudo chrt --rr -p 1 $player
  sudo chrt --rr -p 50 $decoder
fi

spotify_event.sh

Mã:
#!/bin/bash

pcminfo=/run/pcminfo

case "$PLAYER_EVENT" in

  start)
   # stop playback
   /usr/bin/mpc stop > /dev/null

   # stop mpd
   sudo systemctl stop ympd
   sudo systemctl stop ympd.socket
   sudo systemctl stop mpd
   sudo umount /var/lib/mpd/music/NAS

   # stop shairport-sync
   sudo systemctl stop shairport-sync
   sudo sync
   sleep 0.4
   exit
   ;;

  stop)
   if [ ! "`cat /run/pcminfo |cut -d ' ' -f4`" = "DEFAULT" ];then
     exit
   fi
   # wakeup mpd
   sudo systemctl start ympd.socket
   sudo mount -a
   sudo systemctl start mpd

   # start shairport-sync
   sudo systemctl start shairport-sync
   sudo sync
   exit
   ;;
esac

exit 0

shairport_event.sh

Mã:
#!/bin/bash

case "$1" in

  begin)
   echo "$DEFAULT_SAMPLE_FORMAT 44100 2 AIRPLAY" > /run/pcminfo
   sudo systemctl restart pipe

   # stop mpd
   sudo systemctl stop ympd
   sudo systemctl stop ympd.socket
   sudo systemctl stop mpd
   sudo umount /var/lib/mpd/music/NAS

   # stop spotify-connect
   sudo systemctl stop spotifyd

   sync
   sleep 0.4
   exit
   ;;

  end)
   # wakeup mpd
   sudo systemctl start ympd.socket
   sudo mount -a
   sudo systemctl start mpd

   # wakeup spotify-connect
   sudo systemctl start spotifyd
   sync
   exit
   ;;
esac

exit 0
giờ muốn chơi audio chắc phải học thêm khoá linux quá...nhiều dòng code linux đọc vào mù tịt ....
 

mtminh

Well-Known Member
Cảm ơn bác. Bác chỉ giúp config nó ở đâu, hay mặc định có sẵn
Trong giao diên SOUND CARD không có applepi-dac.
Thư mục overlays có: applepi-dac.dtbo

Bác vào /boot/config.txt:

#dtoverlay=rpi-dac
dtoverlay=applepi-dac
---
Restart OS để nạp driver: applepi-dac
Dấu # đầu dòng: không dùng
 
Bên trên