質問編集履歴
5
文法の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
[Arduinoを用いたサンプル](https://github.com/yamaha-webmusic/ymf825board/blob/master/sample1/ymf825board_sample1/ymf825board_sample1.ino)
|
7
7
|
|
8
8
|
実際に書き込む処理をどのようにpythonでどの用に書き直したらいいのかがわかりません。
|
9
|
-
現状のソースコードでは
|
9
|
+
現状のソースコードではエラーもなく実行されますが、音がなりません。
|
10
10
|
|
11
11
|
### 該当のソースコード
|
12
12
|
|
@@ -41,15 +41,21 @@
|
|
41
41
|
|
42
42
|
|
43
43
|
def if_write(addr,data):
|
44
|
+
addr = addr.to_bytes(1, 'big')
|
45
|
+
data = data.to_bytes(1, 'big')
|
46
|
+
|
44
47
|
set_ss_pin(0)
|
45
48
|
wp.wiringPiSPIDataRW(SPI_CH, addr)
|
46
49
|
wp.wiringPiSPIDataRW(SPI_CH, data)
|
47
50
|
set_ss_pin(1)
|
48
51
|
|
49
52
|
def if_m_write(addr,data,num):
|
53
|
+
|
54
|
+
addr = addr.to_bytes(1, 'big')
|
50
55
|
set_ss_pin(0)
|
51
56
|
wp.wiringPiSPIDataRW(SPI_CH, addr)
|
52
|
-
for i in range(0,
|
57
|
+
for i in range(0,35) :
|
58
|
+
data[i] = data[i].to_bytes(1, 'big')
|
53
59
|
wp.wiringPiSPIDataRW(SPI_CH, data[i])
|
54
60
|
set_ss_pin(1)
|
55
61
|
|
@@ -69,9 +75,9 @@
|
|
69
75
|
if_write(0x02,0x0E)
|
70
76
|
delay(1)
|
71
77
|
|
72
|
-
|
78
|
+
if_write(0x00,0x01)#CLKEN
|
73
|
-
|
79
|
+
if_write(0x01,0x00)#AKRST
|
74
|
-
|
80
|
+
if_write(0x1A,0xA3)#soft reset
|
75
81
|
delay(1)
|
76
82
|
|
77
83
|
if_write(0x1A,0x00)
|
@@ -99,7 +105,7 @@
|
|
99
105
|
|
100
106
|
#=============
|
101
107
|
def set_tone():
|
102
|
-
tone_data
|
108
|
+
tone_data =[
|
103
109
|
0x81,\
|
104
110
|
0,\
|
105
111
|
0x01,0x85,\
|
@@ -111,7 +117,7 @@
|
|
111
117
|
|
112
118
|
if_write(0x08,0xF6)
|
113
119
|
delay(1)
|
114
|
-
|
120
|
+
if_write(0x08,0x00)
|
115
121
|
|
116
122
|
if_m_write(0x07,tone_data,35)
|
117
123
|
|
@@ -142,11 +148,13 @@
|
|
142
148
|
init_825()
|
143
149
|
set_tone()
|
144
150
|
set_ch()
|
145
|
-
|
146
151
|
|
152
|
+
|
147
153
|
keyon(0x1c,0x11)
|
148
154
|
delay(500)
|
149
155
|
keyoff()
|
150
156
|
delay(200)
|
151
157
|
|
158
|
+
|
159
|
+
|
152
160
|
```
|
4
書式の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -28,16 +28,16 @@
|
|
28
28
|
|
29
29
|
def set_ss_pin(val):
|
30
30
|
if val == 1:
|
31
|
-
wp.
|
31
|
+
wp.digitalWrite(SS_PIN, wp.GPIO.HIGH)
|
32
32
|
else:
|
33
|
-
wp.
|
33
|
+
wp.digitalWrite(SS_PIN, wp.GPIO.LOW)
|
34
34
|
|
35
35
|
|
36
36
|
def set_rst_pin(val):
|
37
37
|
if val == 1:
|
38
|
-
wp.
|
38
|
+
wp.digitalWrite(RST_PIN, wp.GPIO.HIGH)
|
39
39
|
else:
|
40
|
-
wp.
|
40
|
+
wp.digitalWrite(RST_PIN, wp.GPIO.LOW)
|
41
41
|
|
42
42
|
|
43
43
|
def if_write(addr,data):
|
3
誤字の訂正
title
CHANGED
File without changes
|
body
CHANGED
@@ -28,16 +28,16 @@
|
|
28
28
|
|
29
29
|
def set_ss_pin(val):
|
30
30
|
if val == 1:
|
31
|
-
wp.
|
31
|
+
wp.digitalRW(SS_PIN, wp.GPIO.HIGH)
|
32
32
|
else:
|
33
|
-
wp.
|
33
|
+
wp.digitalRW(SS_PIN, wp.GPIO.LOW)
|
34
34
|
|
35
35
|
|
36
36
|
def set_rst_pin(val):
|
37
37
|
if val == 1:
|
38
|
-
wp.
|
38
|
+
wp.digitalRW(RST_PIN, wp.GPIO.HIGH)
|
39
39
|
else:
|
40
|
-
wp.
|
40
|
+
wp.digitalRW(RST_PIN, wp.GPIO.LOW)
|
41
41
|
|
42
42
|
|
43
43
|
def if_write(addr,data):
|
@@ -144,8 +144,6 @@
|
|
144
144
|
set_ch()
|
145
145
|
|
146
146
|
|
147
|
-
|
148
|
-
print("OK")
|
149
147
|
keyon(0x1c,0x11)
|
150
148
|
delay(500)
|
151
149
|
keyoff()
|
2
質問内容の変更
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,44 +1,154 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
FM音源に興味を持ったのでraspberryPiとYMF825boardを用いてDX7のようなFMシンセを作成しようと考えています。
|
3
|
-
電子工作的なことやICの制御などは今回が初めてなので、YMF825の仕様を見てもあまり理解ができず困っています。
|
4
|
-
RaspberryPiのSPIの有効化はすんでいます。
|
5
3
|
|
6
4
|
### 発生している問題・エラーメッセージ
|
7
5
|
現在下記リンクのサンプルをpythonでRaspberryPi用に書き直そうとしています
|
8
6
|
[Arduinoを用いたサンプル](https://github.com/yamaha-webmusic/ymf825board/blob/master/sample1/ymf825board_sample1/ymf825board_sample1.ino)
|
9
7
|
|
10
|
-
どのレジスタにどういう流れで書き込みを行っているのかはなんとなく把握できたのですが、
|
11
|
-
実際に書き込む処理をどのようにpythonで書き直したらいいのかがわかりません。
|
8
|
+
実際に書き込む処理をどのようにpythonでどの用に書き直したらいいのかがわかりません。
|
12
|
-
|
9
|
+
現状のソースコードではwp.wiringPiSPIDataRWのところで処理が止まってしまいます。
|
13
10
|
|
14
|
-
|
15
11
|
### 該当のソースコード
|
16
12
|
|
17
|
-
```
|
13
|
+
```python
|
18
|
-
|
14
|
+
import wiringpi as wp
|
15
|
+
import time
|
19
|
-
|
16
|
+
#==========================
|
17
|
+
SPI_CH = 0 # SPI channel (0 or 1)
|
20
|
-
|
18
|
+
SPI_SPEED = 2000000 #SPI 2MHz
|
21
|
-
}
|
22
19
|
|
23
|
-
// only for Arduino UNO
|
24
|
-
void set_rst_pin(int val) {
|
25
|
-
if(val ==HIGH) PORTB |= (2);
|
26
|
-
|
20
|
+
SS_PIN = 22
|
27
|
-
|
21
|
+
RST_PIN = 36
|
28
22
|
|
23
|
+
#setup
|
29
|
-
|
24
|
+
wp.wiringPiSPISetup (SPI_CH, SPI_SPEED)
|
30
|
-
char i;
|
31
|
-
char snd;
|
32
|
-
set_ss_pin(LOW);
|
33
|
-
SPI.transfer(addr);
|
34
|
-
|
25
|
+
wp.wiringPiSetupGpio()
|
35
|
-
SPI.transfer(data[i]);
|
36
|
-
}
|
37
|
-
set_ss_pin(HIGH);
|
38
|
-
}
|
39
26
|
|
40
|
-
void if_s_write(char addr,unsigned char data){
|
41
|
-
if_write(addr,&data,1);
|
42
|
-
}
|
43
27
|
|
28
|
+
|
29
|
+
def set_ss_pin(val):
|
30
|
+
if val == 1:
|
31
|
+
wp.digitalWrite(SS_PIN, wp.GPIO.HIGH)
|
32
|
+
else:
|
33
|
+
wp.digitalWrite(SS_PIN, wp.GPIO.LOW)
|
34
|
+
|
35
|
+
|
36
|
+
def set_rst_pin(val):
|
37
|
+
if val == 1:
|
38
|
+
wp.digitalWrite(RST_PIN, wp.GPIO.HIGH)
|
39
|
+
else:
|
40
|
+
wp.digitalWrite(RST_PIN, wp.GPIO.LOW)
|
41
|
+
|
42
|
+
|
43
|
+
def if_write(addr,data):
|
44
|
+
set_ss_pin(0)
|
45
|
+
wp.wiringPiSPIDataRW(SPI_CH, addr)
|
46
|
+
wp.wiringPiSPIDataRW(SPI_CH, data)
|
47
|
+
set_ss_pin(1)
|
48
|
+
|
49
|
+
def if_m_write(addr,data,num):
|
50
|
+
set_ss_pin(0)
|
51
|
+
wp.wiringPiSPIDataRW(SPI_CH, addr)
|
52
|
+
for i in range(0,34) :
|
53
|
+
wp.wiringPiSPIDataRW(SPI_CH, data[i])
|
54
|
+
set_ss_pin(1)
|
55
|
+
|
56
|
+
|
57
|
+
def delay(sec):
|
58
|
+
time.sleep(sec/1000)
|
59
|
+
|
60
|
+
|
61
|
+
#init
|
62
|
+
def init_825():
|
63
|
+
|
64
|
+
set_rst_pin(0)
|
65
|
+
delay(1)
|
66
|
+
set_rst_pin(1)
|
67
|
+
|
68
|
+
if_write(0x1D,0)#OutPower
|
69
|
+
if_write(0x02,0x0E)
|
70
|
+
delay(1)
|
71
|
+
|
72
|
+
if_wirite(0x00,0x01)#CLKEN
|
73
|
+
if_wirite(0x01,0x00)#AKRST
|
74
|
+
if_wirite(0x1A,0xA3)#soft reset
|
75
|
+
delay(1)
|
76
|
+
|
77
|
+
if_write(0x1A,0x00)
|
78
|
+
delay(30)
|
79
|
+
|
80
|
+
if_write(0x02,0x04)
|
81
|
+
delay(1)
|
82
|
+
if_write(0x02,0x00)
|
83
|
+
|
84
|
+
#add
|
85
|
+
if_write( 0x19, 0xF0 )#MASTER VOL
|
86
|
+
if_write( 0x1B, 0x3F )#interpolation
|
87
|
+
if_write( 0x14, 0x00 )#interpolation
|
88
|
+
if_write( 0x03, 0x01 )#Analog Gain
|
89
|
+
|
90
|
+
if_write( 0x08, 0xF6 )
|
91
|
+
delay(21);
|
92
|
+
if_write( 0x08, 0x00 )
|
93
|
+
if_write( 0x09, 0xF8 )
|
94
|
+
if_write( 0x0A, 0x00 )
|
95
|
+
|
96
|
+
if_write( 0x17, 0x40 )
|
97
|
+
if_write( 0x18, 0x00 )
|
98
|
+
|
99
|
+
|
100
|
+
#=============
|
101
|
+
def set_tone():
|
102
|
+
tone_data[35] =[\
|
103
|
+
0x81,\
|
104
|
+
0,\
|
105
|
+
0x01,0x85,\
|
106
|
+
0x00,0x7F,0xF4,0xBB,0x00,0x10,0x40,\
|
107
|
+
0x00,0xAF,0xA0,0x0E,0x03,0x10,0x40,\
|
108
|
+
0x00,0x2F,0xF3,0x9B,0x00,0x20,0x41,\
|
109
|
+
0x00,0xAF,0xA0,0x0E,0x01,0x10,0x40,\
|
110
|
+
0x80,0x03,0x81,0x80]
|
111
|
+
|
112
|
+
if_write(0x08,0xF6)
|
113
|
+
delay(1)
|
114
|
+
id_write(0x08,0x00)
|
115
|
+
|
116
|
+
if_m_write(0x07,tone_data,35)
|
117
|
+
|
118
|
+
#=============
|
119
|
+
|
120
|
+
def set_ch():
|
121
|
+
if_write( 0x0F, 0x30 )
|
122
|
+
if_write( 0x10, 0x71 )
|
123
|
+
if_write( 0x11, 0x00 )
|
124
|
+
if_write( 0x12, 0x08 )
|
125
|
+
if_write( 0x13, 0x00 )
|
126
|
+
|
127
|
+
def keyon(fnumh,fnuml):
|
128
|
+
if_write( 0x0B, 0x00 )
|
129
|
+
if_write( 0x0C, 0x54 )
|
130
|
+
if_write( 0x0D, fnumh )
|
131
|
+
if_write( 0x0E, fnuml )
|
132
|
+
if_write( 0x0F, 0x40 )
|
133
|
+
|
134
|
+
def keyoff():
|
135
|
+
if_write(0x0F,0x00)
|
136
|
+
|
137
|
+
#==================
|
138
|
+
|
139
|
+
if __name__ == '__main__' :
|
140
|
+
|
141
|
+
|
142
|
+
init_825()
|
143
|
+
set_tone()
|
144
|
+
set_ch()
|
145
|
+
|
146
|
+
|
147
|
+
|
148
|
+
print("OK")
|
149
|
+
keyon(0x1c,0x11)
|
150
|
+
delay(500)
|
151
|
+
keyoff()
|
152
|
+
delay(200)
|
153
|
+
|
44
154
|
```
|
1
質問内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
FM音源に興味を持ったのでraspberryPiとYMF825boardを用いてDX7のようなFMシンセを作成しようと考えています。
|
3
3
|
電子工作的なことやICの制御などは今回が初めてなので、YMF825の仕様を見てもあまり理解ができず困っています。
|
4
|
+
RaspberryPiのSPIの有効化はすんでいます。
|
4
5
|
|
5
6
|
### 発生している問題・エラーメッセージ
|
6
7
|
現在下記リンクのサンプルをpythonでRaspberryPi用に書き直そうとしています
|