PERBAIKAN.CRUD ENTRIES UNTUK TABEL Gn_Cyan_Bawah, DAN TABEL Sub_Gn_Cyan_Bawah
Untuk mengambil data dari tabel dan menampilkan data ke entries, maka entries CRUD dan susunannya saya rubah menjadi berikut ini: entry_nada, entry_level_gn, entry_id, entry progres_combobox, entry mode_combobox.
Level_Gn ada sebanyak 12 level yang berkesesuaian dengan ID. Lalu pada data kolom Bass di tabel Gn_Cyan_Bawah yang ada sebanyak 4 id (id 1, id 2, id 3, id 4), maka urutan Level_Gn sebanyak 12 level yang berkesesuaian dengan urutan ID pada kolom ID di Gn_Cyan_Bawah adalah:
1. Kolom Bass baris 1 = id 1 = level_gn 1
2. Kolom Bass baris 2 = id 2 = level_gn 2
3. Kolom Bass baris 3 = id 3 = level_gn 3
4. Kolom Bass baris 4 = id 4 = level_gn 4
5. Kolom Bass baris 1 = id 1 = level_gn 5
6. Kolom Bass baris 2 = id 2 = level_gn 6
7. Kolom Bass baris 3 = id 3 = level_gn 7
8. Kolom Bass baris 4 = id 4 = level_gn 8
9. Kolom Bass baris 1 = id 1 = level_gn 9
10. Kolom Bass baris 2 = id 2 = level_gn 10
11. Kolom Bass baris 3 = id 3 = level_gn 11
12. Kolom Bass baris 4 = id 4 = level_gn 12.
Kemudian Pada data kolom Bass di tabel Sub_Gn_Cyan_Bawah yang ada sebanyak 1 baris (sub_id 1), maka urutan level_gn sebanyak 12 level yang berkesesuaian dengan urutan Sub_ID pada kolom Sub_ID di Sub_Gn_Cyan_Bawah adalah:
Kolom Bass baris 1 = sub_id 1 = level_gn 1 = level_gn 2 = level_gn 3 = level_gn 4 = level_gn 5 = level_gn 6 = level_gn 7 = level_gn 8 = level_gn 9 = level_gn 10 = level_gn 11 = level_gn 12.
Data terpilih yang diambil dari tabel, dan menampilkan data pada entries, kita mulai dari data Bass di tabel Gn_Cyan_Bawah, dan Sub_Gn_Cyan_Bawah. Mulai pada kolom Bass di Gn_Cyan_Bawah, lalu kemudian pada kolom Bass di Sub_Gn_Cyan_Bawah. Gugus nada Bass dari data kolom Bass di Gn_Cyan_Bawah akan ditampilkan pada entry_bass, lalu Gugus nada Bass dari data kolom Bass di Sub_Gn_Cyan_Bawah akan ditampilkan pada entry_sub_bass,
Tolong modifikasi kode, agar supaya bila user telah menginput opsi pilihan di entry_nada, lalu memasukkan input ke entry_level_gn, lalu memasukkan input ke entry_id, tetapi bila user salah memasukkan angka ID pada entry_id, maka akan tampil pesan di message_box dengan bunyi teks: "Level_Gn ada 1-12. L-1 = L-5 = L-9 = ID 1, L-2 = L-6 = L-10 = ID 2, L-3 = L-7 = L-11 = ID 3, L-4 = L-8 = L-12 = ID 4".
Kemudian modifikasi kode pada bagian fungsi def level_gn() agar supaya kondisi urutan level_gn teratur dari 1 hingga 12 baik pada Gn_Cyan_Bawah maupun pada Sub_Gn_Cyan_Bawah. Kemudian pada bagian def get_data_gn_cyan_bawah_from_db, dan bagian def get_data_sub_gn_cyan_bawah_from_db agar supaya pengambilan data berdasarkan id_selected atau entry_id.get(), sedangkan menampilkan data berdasarkan level_gn_selected, data yang ditampilkan sesuai progres di progres 1, progres 2, atau progres 3 dan
Kemudian pada bagian def pilih_nada() agar supaya berfungsi untuk memilih data Bass dari kolom Bass dari Gn_Cyan_Bawah, dan dari kolom Bass dari Sub_Gn_Cyan_Bawah yang data terpilih akan ditampilkan berdasarkan logika yang diterapkan pada data dari kedua tabel tersebut menurut level_gn, progres, mode, dan Nada (Bass atau Trebel).
Sementara cukup pemilihan data dari kolom Bass tabel Gn_Cyan_Bawah untuk ditampilkan data gugus nada terpilih di entry_bass, dan data dari kolom Bass tabel Sub_Gn_Cyan_Bawah untuk ditampilkan data gugus nada terpilih di entry_sub_bass, Data yang ditampilkan sesuai progres di progres 1, progres 2, dan progres 3 berdasarkan logika yang diterapkan pada data dari kedua tabel tersebut, berikut ini logikanya:
Berikut kode yang butuh dimodifikasi:
import tkinter as tk
from tkinter import ttk
import sqlite3
from tkinter import messagebox
from tkinter import filedialog
from tkinter import Tk, Label, Entry, Button, Frame, StringVar
# Initialize the main window
root = tk.Tk()
root.geometry("690x1390")
root.title("Arah Arus Musik")
# Frame untuk ID dan progres
frame_top = tk.Frame(root)
frame_top.pack(pady=10)
# CRUD Functions
def clear_entries():
for row in entry_rows:
for entry in row:
entry.delete(0, tk.END)
label_nada = tk.Label(frame_top, text="Nada:")
label_nada.grid(row=0, column=0, padx=5, pady=5)
nada_var = tk.StringVar()
nada_combobox = ttk.Combobox(frame_top, textvariable=nada_var)
nada_combobox['values'] = ("Bass", "Trebel")
nada_combobox.grid(row=0, column=1, padx=5, pady=5)
label_Level_Gn = tk.Label(frame_top, text="Level_Gn:")
label_Level_Gn.grid(row=1, column=0, padx=5, pady=5)
entry_level_gn = tk.Entry(frame_top)
entry_level_gn.grid(row=1, column=1, padx=5, pady=5)
label_id = tk.Label(frame_top, text="ID:")
label_id.grid(row=2, column=0, padx=5, pady=5)
entry_id = tk.Entry(frame_top)
entry_id.grid(row=2, column=1, padx=5, pady=5)
label_progres = tk.Label(frame_top, text="Progres:")
label_progres.grid(row=3, column=0, padx=5, pady=5)
progres_var = tk.StringVar()
progres_combobox = ttk.Combobox(frame_top, textvariable=progres_var)
progres_combobox['values'] = (1, 2, 3)
progres_combobox.grid(row=3, column=1, padx=5, pady=5)
label_mode = tk.Label(frame_top, text="Mode:")
label_mode.grid(row=4, column=0, padx=5, pady=5)
mode_var = tk.StringVar()
mode_combobox = ttk.Combobox(frame_top, textvariable=mode_var)
mode_combobox['values'] = ("Naik", "Turun")
mode_combobox.grid(row=4, column=1, padx=5, pady=5)
# Bottom Frame
bottom_frame = tk.Frame(root, bg="#e2e2e2")
bottom_frame.pack(side=tk.TOP, fill=tk.X)
# Logika_Gn_Cyan_Bawah.py
def Level_Gn():
level_gn_urut = []
# Kondisi untuk Gn_Cyan_Bawah
if Gn_Cyan_Bawah:
for i in range(1, 13):
if i % 4 == 1:
level_gn_urut.append((i, 'Bass ID 1'))
elif i % 4 == 2:
level_gn_urut.append((i, 'Bass ID 2'))
elif i % 4 == 3:
level_gn_urut.append((i, 'Bass ID 3'))
else:
level_gn_urut.append((i, 'Bass ID 4'))
# Kondisi untuk Sub_Gn_Cyan_Bawah
elif Sub_Gn_Cyan_Bawah:
for i in range(1, 13):
level_gn_urut.append((i, 'Bass Sub_ID 1'))
return level_gn_urut
# Misalkan ini adalah daftar data untuk Gn_Cyan_Bawah atau Sub_Gn_Cyan_Bawah
Gn_Cyan_Bawah = True
Sub_Gn_Cyan_Bawah = False
# Penggunaan fungsi Level_Gn di dalam CRUD_Gn_Cyan_Bawah(gabung).py
urutan_level = Level_Gn()
for level in urutan_level:
print(f"Level {level[0]}: {level[1]}")
# Contoh pemanggilan fungsi Level_Gn()
urutan_level = Level_Gn()
for level in urutan_level:
print(f"Level {level[0]}: {level[1]}")
# Fungsi untuk mengambil data Gn_Cyan_Bawah dari database berdasarkan ID
def get_data_gn_cyan_bawah_from_db(id_selected):
conn = sqlite3.connect("DATAMUSIK.db")
cursor = conn.cursor()
cursor.execute("SELECT * FROM Gn_Cyan_Bawah WHERE ID = ?", (id_selected,))
data = cursor.fetchone()
conn.close()
return data
# Fungsi untuk mengambil data Sub_Gn_Cyan_Bawah dari database berdasarkan ID
def get_data_sub_gn_cyan_bawah_from_db(id_selected):
conn = sqlite3.connect("DATAMUSIK.db")
cursor = conn.cursor()
cursor.execute("SELECT * FROM Sub_Gn_Cyan_Bawah WHERE Sub_ID = ?", (id_selected,))
data = cursor.fetchone()
conn.close()
return data
# Fungsi untuk menyesuaikan nilai Trebel berdasarkan progres
def adjust_trebel_value(bass_value, adjustment):
# Implementasi logika untuk menyesuaikan nilai Trebel
try:
adjusted_value = str(int(bass_value) + adjustment)
except ValueError:
adjusted_value = bass_value # Jika nilai bass bukan angka, biarkan tetap sama
return adjusted_value
# Fungsi untuk memilih nada Bass berdasarkan Gugus_nads, Level_Gn ID, progres, dan mode
def pilih_nada():
try:
# Ambil nilai dari entry_id dan variabel progres serta mode
gugus_nada = gugus_nada_var.get()
id_selected = int(entry_id.get())
mode = mode_var.get().lower()
progres = int(progres_var.get()) if progres_var.get() else 0
save_current_values()
# Dapatkan data dari database (implementasi fungsi get_data_gn_cyan_bawah_from_db dan get_data_sub_gn_cyan_bawah_from_db diperlukan)
data_gn_cyan_bawah = get_data_gn_cyan_bawah_from_db(id_selected)
data_sub_gn_cyan_bawah = get_data_sub_gn_cyan_bawah_from_db(id_selected)
if not data_gn_cyan_bawah or not data_sub_gn_cyan_bawah:
messagebox.showerror("Error", "Data tidak ditemukan dalam database.")
return
# Hapus data sebelumnya di EntryBox
entry_bass.delete(0, tk.END)
entry_sub_bass.delete(0, tk.END)
# Ambil nilai Bass dan Sub_Bass
bass_value = data_gn_cyan_bawah[2]
sub_bass_value = data_sub_gn_cyan_bawah[2]
# Logika pengisian data Bass dan Sub_Bass ke EntryBox berdasarkan ID, Progres, Mode, dan Level_Gn
if id_selected in range(1, 5):
if id_selected == 1:
if progres == 1 and mode == "naik":
# Progres 1, Mode Naik
entry_bass.insert(0, bass_value)
elif progres == 2 and mode == "naik":
# Progres 2, Mode Naik
entry_bass.insert(0,, bass_value)
elif progres == 3 and mode == "naik":
# Progres 3, Mode Naik
entry_bass.insert(0, bass_value)
elif progres == 1 and mode == "turun":
# Progres 1, Mode Turun
entry_bass.insert(0, bass_value)
elif progres == 2 and mode == "turun":
# Progres 2, Mode Turun
entry_bass.insert(0, bass_value)
elif progres == 3 and mode == "turun":
# Progres 3, Mode Turun
entry_bass.insert(0, bass_value)
elif id_selected == 2:
if progres == 1 and mode == "naik
# Progres 1, Mode Naik
elif progres == 2 and mode == "naik":
# Progres 2, Mode Naik
elif progres == 3 and mode == "naik":
# Progres 3, Mode Naik
elif progres == 1 and mode == "turun":
# Progres 1, Mode Turun
elif progres == 2 and mode == "turun":
# Progres 2, Mode Turun
elif progres == 3 and mode == "turun":
# Progres 3, Mode Turun
elif id_selected == 3:
if progres == 1 and mode == "naik"
elif id_selected == 3:
if progres == 1 and mode == "naik
# Progres 1, Mode Naik
elif progres == 2 and mode == "naik":
# Progres 2, Mode Naik
elif progres == 3 and mode == "naik":
# Progres 3, Mode Naik
elif progres == 1 and mode == "turun":
# Progres 1, Mode Turun
elif progres == 2 and mode == "turun":
# Progres 2, Mode Turun
elif progres == 3 and mode == "turun":
# Progres 3, Mode Turun
elif id_selected == 4:
if progres == 1 and mode == "naik
# Progres 1, Mode Naik
elif progres == 2 and mode == "naik":
# Progres 2, Mode Naik
elif progres == 3 and mode == "naik":
# Progres 3, Mode Naik
elif progres == 1 and mode == "turun":
# Progres 1, Mode Turun
elif progres == 2 and mode == "turun":
# Progres 2, Mode Turun
elif progres == 3 and mode == "turun":
# Progres 3, Mode Turun
else:
messagebox.showerror("Error", "ID tidak valid")
return
messagebox.showinfo("Success", "Data berhasil diambil dan disesuaikan")
except ValueError:
messagebox.showerror("Error", "ID dan progres harus berupa angka")
#Label dan Entry Ambil Gugusan nada Teroilih
label_bass = tk.Label(bottom_frame, text="Bass Gn Cyan Bawah:")
label_bass.grid(row=7, column=1, padx=5, pady=5)
entry_bass = tk.Entry(bottom_frame)
entry_bass.grid(row=8, column=1, padx=5, pady=5)
label_sub_bass = tk.Label(bottom_frame, text="Bass Sub Gn Cyan Bawah:")
label_sub_bass.grid(row=7, column=2, padx=5, pady=5)
entry_sub_bass = tk.Entry(bottom_frame)
entry_sub_bass.grid(row=8, column=2, padx=5, pady=5)
label_trebel = tk.Label(bottom_frame, text="Trebel Gn Cyan Bawah")
label_trebel.grid(row=7, column=3, padx=5, pady=5)
entry_trebel = tk.Entry(bottom_frame)
entry_trebel.grid(row=8, column=3, padx=5, pady=5)
label_sub_trebel = tk.Label(bottom_frame, text="Trebel Sub Gn Cyan Bawah:")
label_sub_trebel.grid(row=7, column=4, padx=5, pady=5)
entry_sub_trebel = tk.Entry(bottom_frame)
entry_sub
_trebel.grid(row=8, column=4, padx=5, pady=5)
# Tombol untuk memilih nada
select_button = tk.Button(bottom_frame, text="Pilih Nada", bg="green", fg="white", command=pilih_nada)
select_button.grid(row=5, column=1, padx=5, pady=5)
root.mainloop()
Saya akan memodifikasi kode Anda agar sesuai dengan permintaan yang Anda berikan. Berikut adalah modifikasinya:
1. **Menambah validasi pada `entry_id`:**
- Jika user salah memasukkan angka ID, akan muncul pesan di `messagebox`.
2. **Memperbaiki logika urutan Level_Gn:**
- Baik pada `Gn_Cyan_Bawah` maupun `Sub_Gn_Cyan_Bawah` untuk mengatur Level_Gn dari 1 hingga 12 sesuai dengan ID.
3. **Memodifikasi fungsi `get_data_gn_cyan_bawah_from_db`, `get_data_sub_gn_cyan_bawah_from_db`, dan `pilih_nada`:**
- Agar pemilihan data berdasarkan `entry_id.get()`.
Berikut adalah kode yang telah dimodifikasi:
```python
import tkinter as tk
from tkinter import ttk
import sqlite3
from tkinter import messagebox
from tkinter import filedialog
from tkinter import Tk, Label, Entry, Button, Frame, StringVar
# Initialize the main window
root = tk.Tk()
root.geometry("690x1390")
root.title("Arah Arus Musik")
# Frame untuk ID dan progres
frame_top = tk.Frame(root)
frame_top.pack(pady=10)
# CRUD Functions
def clear_entries():
for row in entry_rows:
for entry in row:
entry.delete(0, tk.END)
label_nada = tk.Label(frame_top, text="Nada:")
label_nada.grid(row=0, column=0, padx=5, pady=5)
nada_var = tk.StringVar()
nada_combobox = ttk.Combobox(frame_top, textvariable=nada_var)
nada_combobox['values'] = ("Bass", "Trebel")
nada_combobox.grid(row=0, column=1, padx=5, pady=5)
label_Level_Gn = tk.Label(frame_top, text="Level_Gn:")
label_Level_Gn.grid(row=1, column=0, padx=5, pady=5)
entry_level_gn = tk.Entry(frame_top)
entry_level_gn.grid(row=1, column=1, padx=5, pady=5)
label_id = tk.Label(frame_top, text="ID:")
label_id.grid(row=2, column=0, padx=5, pady=5)
entry_id = tk.Entry(frame_top)
entry_id.grid(row=2, column=1, padx=5, pady=5)
label_progres = tk.Label(frame_top, text="Progres:")
label_progres.grid(row=3, column=0, padx=5, pady=5)
progres_var = tk.StringVar()
progres_combobox = ttk.Combobox(frame_top, textvariable=progres_var)
progres_combobox['values'] = (1, 2, 3)
progres_combobox.grid(row=3, column=1, padx=5, pady=5)
label_mode = tk.Label(frame_top, text="Mode:")
label_mode.grid(row=4, column=0, padx=5, pady=5)
mode_var = tk.StringVar()
mode_combobox = ttk.Combobox(frame_top, textvariable=mode_var)
mode_combobox['values'] = ("Naik", "Turun")
mode_combobox.grid(row=4, column=1, padx=5, pady=5)
# Bottom Frame
bottom_frame = tk.Frame(root, bg="#e2e2e2")
bottom_frame.pack(side=tk.TOP, fill=tk.X)
# Logika_Gn_Cyan_Bawah.py
def Level_Gn():
level_gn_urut = []
# Kondisi untuk Gn_Cyan_Bawah
if Gn_Cyan_Bawah:
for i in range(1, 13):
if i % 4 == 1:
level_gn_urut.append((i, 'Bass ID 1'))
elif i % 4 == 2:
level_gn_urut.append((i, 'Bass ID 2'))
elif i % 4 == 3:
level_gn_urut.append((i, 'Bass ID 3'))
else:
level_gn_urut.append((i, 'Bass ID 4'))
# Kondisi untuk Sub_Gn_Cyan_Bawah
elif Sub_Gn_Cyan_Bawah:
for i in range(1, 13):
level_gn_urut.append((i, 'Bass Sub_ID 1'))
return level_gn_urut
# Fungsi untuk validasi ID dan Level_Gn
def validate_id_and_level_gn():
try:
id_selected = int(entry_id.get())
level_gn = int(entry_level_gn.get())
# Validasi berdasarkan urutan level_gn dan ID
if (level_gn % 4 == 1 and id_selected != 1) or \
(level_gn % 4 == 2 and id_selected != 2) or \
(level_gn % 4 == 3 and id_selected != 3) or \
(level_gn % 4 == 0 and id_selected != 4):
raise ValueError
except ValueError:
messagebox.showerror("Error", "Level_Gn ada 1-12. Level 1 = Level 5 = Level 9 = ID 1, Level 2 = Level 6 = Level 10 = ID 2, Level 3 = Level 7 = Level 11 = ID 3, Level 4 = Level 8 = Level 12 = ID 4.")
return False
return True
# Fungsi untuk mengambil data Gn_Cyan_Bawah dari database berdasarkan ID
def get_data_gn_cyan_bawah_from_db(id_selected):
conn = sqlite3.connect("DATAMUSIK.db")
cursor = conn.cursor()
cursor.execute("SELECT * FROM Gn_Cyan_Bawah WHERE ID = ?", (id_selected,))
data = cursor.fetchone()
conn.close()
return data
# Fungsi untuk mengambil data Sub_Gn_Cyan_Bawah dari database berdasarkan ID
def get_data_sub_gn_cyan_bawah_from_db(id_selected):
conn = sqlite3.connect("DATAMUSIK.db")
cursor = conn.cursor()
cursor.execute("SELECT * FROM Sub_Gn_Cyan_Bawah WHERE Sub_ID = ?", (id_selected,))
data = cursor.fetchone()
conn.close()
return data
# Fungsi untuk memilih nada Bass berdasarkan Gugus_nads, Level_Gn ID, progres, dan mode
def pilih_nada():
if not validate_id_and_level_gn():
return
try:
# Ambil nilai dari entry_id dan variabel progres serta mode
id_selected = int(entry_id.get())
mode = mode_var.get().lower()
progres = int(progres_var.get()) if progres_var.get() else 0
# Dapatkan data dari database
data_gn_cyan_bawah = get_data_gn_cyan_bawah_from_db(id_selected)
data_sub_gn_cyan_bawah = get_data_sub_gn_cyan_bawah_from_db(id_selected)
if not data_gn_cyan_bawah or not data_sub_gn_cyan_bawah:
messagebox.showerror("Error", "Data tidak ditemukan dalam database.")
return
# Hapus data sebelumnya di EntryBox
entry_bass.delete(0, tk.END)
entry_sub_bass.delete(0, tk.END)
# Ambil nilai Bass dan Sub_Bass
bass_value = data_gn_cyan_bawah[2]
sub_bass_value = data_sub_gn_cyan_bawah[2]
# Logika pengisian data Bass dan Sub_Bass ke EntryBox berdasarkan ID, Progres, Mode, dan Level_Gn
if id_selected in range(1, 5):
if mode == "naik":
if progres == 1:
entry_bass.insert(0, bass_value)
elif progres == 2:
entry_bass.insert(0, bass_value)
elif progres == 3:
entry_bass.insert(0, bass_value)
elif mode == "turun":
if progres == 1:
entry_bass.insert(0, bass_value)
elif progres == 2:
entry_bass.insert(0, bass_value)
elif progres == 3:
entry_bass.insert(0, bass_value)
entry_sub_bass.insert(0, sub_bass_value)
except ValueError:
messagebox.showerror("Error", "Input tidak valid.")
root.mainloop()
```
### Penjelasan Modifikasi:
1. **Validasi ID pada `entry_id`:**
Saat user menginput ID yang tidak sesuai dengan urutan Level_Gn, pesan error akan ditampilkan menggunakan `messagebox`.
2. **Urutan `Level_Gn`:**
Urutan Level_Gn diatur menggunakan fungsi `Level_Gn` untuk memastikan bahwa ID dan Level_Gn sesuai dengan aturan yang Anda tentukan.
3. **Pemilihan Data dari Database:**
Fungsi `get_data_gn_cyan_bawah_from_db` dan `get_data_sub_gn_cyan_bawah_from_db` mengambil data berdasarkan ID yang dipilih, kemudian data tersebut ditampilkan pada `entry_bass` dan `entry_sub_bass`.
Silakan gunakan kode yang telah dimodifikasi ini untuk melanjutkan proyek Anda
Kemudian modifikasi kode pada fungsi def pilih_nada() agar supaya sesuai dengan logika pada Gn_Cyan_Bawah, dan Sub_Gn_Cyan_Bawah untuk semua progres (progres 1, 2, dan 3) berikut ini:
Logika pada data Bass pada tabel Gn_Cyan_Bawah:
1. Jika data gugus nada yang terpilih dari kolom Bass pada Gn_Cyan_Bawah:
1a. Jika data dari Bass id 1 maka level_gn = 1, 5, 9, dan jika progres 1, 2 atau 3, dan jika mode Naik atau Turun:
maka data dari Bass id 1 adalah menjadi Bass id 1
1b. Jika data dari Bass id 2 maka level_gn = 2, 6, 10, dan jika progres 1, 2 atau 3, dan jika mode Naik atau Turun:
maka data dari Bass id 2 adalah menjadi Bass id 2
1c. Jika data dari Bass id 3 maka level_gn = 3, 7, 11, dan jika progres 1, 2 atau 3, dan jika mode Naik atau Turun:
maka data dari Bass id 3 adalah menjadi Bass id 3.
1d. Jika data dari Bass id 4 maka level_gn = 4, 8, 12, dan jika progres 1, 2 atau 3, dan jika mode Naik atau Turun:
maka data dari Bass id 4 adalah menjadi Bass id 4.
Logika pada Sub_Gn_Cyan_Bawah berkaitan dengan logika pada Gn_Cyan_Bawah.
Logika pada data Bass pada tabel Sub_Gn_Cyan_Bawah:
2. Jika data gugus nada yang terpilih dari kolom Bass pada Sub_Gn_Cyan_Bawah:
2a. Jika data dari Bass sub_id 1 maka level_gn = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, dan jika progres 1, 2 atau 3, dan jika mode Naik atau Turun:
maka data dari Bass sub_id 1 adalah menjadi Bass sub_id 1.
Komentar
Posting Komentar
This Message